首先,我是基于python进行对selenium操作和使用的,主要分为selenium的实现原理和selenium的操作这两大部分的简单分享(由于本人水平有限,仅做基础的概述和总结):

一、selenium原理(selenium1—>selenium2—>selenium3):

1.对于每个Selenium脚本的命令,都会创建一个HTTP请求并将其发送到浏览器驱动程序;

2.每一个命令的执行结果都会返回给自动化代码;

3.ChromeDirver创建session时打开了浏览器,Selenium代码和浏览器驱动的交互都根据ChromeDriver创建的sessionId。

版本的发展有selenium1—>selenium2—>selenium3:

selenium各版本简介
 版        本 版 本 特 点 版  本  功  能
 selenium1  selenium IDE+selenium Grid+selenium RC(核心) selenium RC包括selenium server和client libraries,selenium server用来操作浏览器,client libraries用来编写测试脚本,RC是执行浏览器中的JavaScript来翻译执行selenium脚本的代码命令。
 selenium2  selenium1+webDriver(核心) webDriver通过原生浏览器支持或者浏览器扩展来直接控制浏览器。
 selenium3  selenium2-seleniumRC 增加支持了一些系统和版本,主要还是webDriver。

二、selenium实现(基于python编写):

 #coding:utf-8
from selenium import webdriver def main():
#设置参数访问url
url = 'http://www.zhilian.com/'
#创建webDriver对象,操作火狐浏览器
driver = webdriver.Firefox()
driver.get(url)
#隐形等待10S
implicitly_wait(10)
#定位元素,操作元素
driver.find_element_by_id('kw').send_keys('Python')
implicitly_wait(5)
driver.find_element_by_id('su').click()
#退出
driver.quit() if __name__ == "__main__":
main()

其中selenium中元素定位的方式有:

1.id 不重复(常用)
2.name 重复
3.class_name 类名
4.tag_name 标签名

5.link_text / partial_link_text 链接文本

6.Xpath XML元素路径(常用)
7.Css CSS选择器

其中selenium的一些常用操作:

(1)模拟鼠标的移动事件:
from selenium import webdriver
# 模拟鼠标的类包
from selenium.webdriver.common.action_chains import ActionChains
"""
鼠标对应操作方法:
context_click():右击事件 double_click():双击事件
drag_and_drop():拖动事件 move_to_element():鼠标停留在一个元素上
click_and_hold:按下鼠标左键停留在一个元素上
"""
# 导入键盘类
from selenium.webdriver.common.keys import Keys
"""
键盘对应对应的方法:
send_keys(Keys.BACK_SPACE) 退格键
send_keys(Keys.CONTRL,'a'): 全选,'c/v/x'分别复制粘贴剪切
send_keys(Keys.ENTER): 回车
"""

FireFox浏览器中有一款适合元素定位的插件firebug比较好用;

(2)处理多窗口和alter弹窗:

用到switch_to_alter();

---------------------------------------------------------------------------

只是个人平时的总结和分享,欢迎批评指正。

最新文章

  1. autofs自动挂载
  2. 软件分析(Mobile Apps )--百词斩
  3. http 各个状态码及对应的java 编程
  4. memcached/redis安全性
  5. C语言——递归练习
  6. verilog中连续性赋值中的延时
  7. MTK elian(smartlink)在WIN32下的实现
  8. tomcat7的web.xml的xml片段与注解资源的发现处理逻辑
  9. 记一次mysql千万订单汇总查询优化
  10. android binder理解
  11. 常见JS写法
  12. FPGA——按键(二)
  13. ng2tree在ios中无法触发click
  14. 不得不补:PHP的JSON, SQL
  15. bus总线
  16. 代理本地局域网其他PC上网的设置
  17. oracle学习之pl/sql使用==转载
  18. Python redis交互
  19. python2.7练习小例子(二十)
  20. 通过映射缓存文件夹加速WPF的响应速度

热门文章

  1. 转载-mysql中文编码问题
  2. selenium--拖拽页面元素
  3. react-native-cli运行项目及打包apk失败的解决过程
  4. 箭头函数可不用return直接将表达式作为函数返回值
  5. 使Jackson和Mybatis支持JSR310标准
  6. HTML基础知识---文本编辑练习
  7. PyTorch学习之六个学习率调整策略
  8. Finalizer 导致的OOM
  9. 实现简单的AOP前置后置增强
  10. Python【每日一问】29