1、了解selenium
Selenium是一个Web的自动化测试工具,最初是为 站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏等。
2、selenium的工作原理
工作原理:代码——调用webdriver——操作浏览器
利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)
- webdriver本质是一个web-server,对外提供webapi,其中封装了浏览器的各种功能
- 不同的浏览器使用各自不同的webdriver
(1)driver对象的常用属性和方法
- 当前标签页浏览器渲染之后的 页源代码
- 当前标签页的url
- 关闭当前标签页,如果只有一个标签页则关闭整个浏览器
- 关闭浏览器
- 页面前进
- 页面后退
- 页面截图(常用验证码截图)
(2)driver对象定位标签元素获取标签对象的方法
注意:
- find_element和find_elements的区别:
- 多了个s就返回列表,没有s就返回匹配到的第一个标签对象
- find_element匹配不到就抛出异常,find_elements匹配不到就返回空列表
- by_link_text和by_partial_link_tex的区别:全部文本和包含某个文本
(3)标签对象提取文本内容和属性值
- 对元素执行点击操作:对定位到的标签对象进行点击操作
- 向输入框输入数据:对定位到的标签对象输入数据
- 获取文本:通过定位获取的标签对象的属性,获取文本内容
- 获取属性值:通过定位获取的标签对象的函数,传入属性名,来获取属性的值
(1)selenium标签页的切换
案例1:
(2)switch_to切换frame标签
iframe是html中常用的一种技术,即一个页面中嵌套了另一个 页,selenium默认是访问不了frame中的内容的,对应的解决思路是。
driver.get_cookies()返回列表,其中包含的是完整的cookie信息!不光有name、value,还有domain等cookie其他维度的信息。所以如果想要把获取的cookie信息和requests模块配合使用的话,需要转换为name、value作为键值对的cookie字典
(5) selenium控制浏览器执行js代码:
(6)页面等待
1)强制等待
- 不智能,设置的时间太短,元素还没有加载出来;
- 设置的时间太长,则会浪费时间
2)隐式等待
- 隐式等待针对的是元素定位,隐式等待设置了一个时间,在一段时间内判断元素是否定位成功,如果完成了,就进行下一步
- 在设置的时间内没有定位成功,则会 超时加载
3)显式等待(用于软件测试较多)
- 每经过多少秒就查看一次等待条件是否达成,如果达成就停止等待,继续执行后续代码
- 如果没有达成就继续等待直到超过规定的时间后, 超时异常
- 参数20表示最长等待20秒
参数0.5表示0.5秒检查一次规定的标签是否存在
(7)selenium开启无界面模式
- 实例化配置对象:
- 配置对象添加开启无界面模式的命令:
- 配置对象添加禁用gpu的命令:
- 实例化带有配置对象的driver对象:
注意:macos中chrome浏览器59+版本,Linux中57+版本才能使用无界面模式!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!