爬虫学习笔记4-selenium

1、了解selenium

Selenium是一个Web的自动化测试工具,最初是为 站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏等。

2、selenium的工作原理

工作原理:代码——调用webdriver——操作浏览器
利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)

  • webdriver本质是一个web-server,对外提供webapi,其中封装了浏览器的各种功能
  • 不同的浏览器使用各自不同的webdriver

(1)driver对象的常用属性和方法

  1. 当前标签页浏览器渲染之后的 页源代码
  2. 当前标签页的url
  3. 关闭当前标签页,如果只有一个标签页则关闭整个浏览器
  4. 关闭浏览器
  5. 页面前进
  6. 页面后退
  7. 页面截图(常用验证码截图)

(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进行处理,非常感谢!

上一篇 2020年7月21日
下一篇 2020年7月21日

相关推荐