WebDriver做为Selenium项目的工具之一,能够高效的操做各种主流浏览器包括诸如:chrome、IE、Firefox、Safari,并同时支持windows和*nux系统。WebDriver的初衷是为了自动化测试,以后随着爬虫的兴起,因为不用分析和目标网站繁琐的交互数据包,使用方便加上较高的效率以及必定的反反爬虫特色,在针对特定网站内容爬取上,应用较多。spring
因为本身最近的一个项目需求,对WebDriver进行了学习和应用,为了保持和系统后台语言的一致性(后台使用spring框架),我选用的Java做为开发语言。WebDriver基本的使用就不累述了,网上一搜一大把的,这里主要分享一下在使用过程当中遇到的坑以及解决方案。chrome
以国外知乎quora的登录页面为例,想要在Email输入框中填写信息,下图红框中:windows
若按照WebDriver官方的文档操做的,就会抛出"element not interactable"的异常,代码以下:浏览器
解决方法是使用Actions来进行操做,代码以下: 框架
建议全部相似的操做,都直接使用Actions来进行操做,避免出现相似的问题。 工具
有一些网页会经过内嵌iframe标签的方法,来实现某些功能,若是直接操做iframe标签中元素,会抛出"找不到元素(no such element)"的异常。好比163邮箱的注册页面: 学习
若是直接操做红框中的元素,想在其中输入用户名,则会抛出异常。这个缘由就是因为该元素在一个iframe中: 测试
此时的解决方案就是WebDriver提供的switchTo()方法,切换到该iframe中,再去操做目标元素,关键代码以下: 网站
某些下拉框不能按照常规的流程来处理,即找到元素而后再点击,用代码表示就是下面这样的: spa
一个例子就是国外社交网站snapchat的注册页面,其手机号的国际区号选择就是这样一个下拉框:
若是按照常规流程,会抛出找不到元素的异常。
此时解决方案是使用WebDriver提供的Select类,关键代码以下:
by:会飞的猫