java的webdriver_Java WebDriver 使用经验

0x00 背景

WebDriver作为Selenium项目的工具之一,可以高效的操作各类主流浏览器包括诸如:chrome、IE、Firefox、Safari,并同时支持windows和*nux系统。WebDriver的初衷是为了自动化测试,之后随着爬虫的兴起,由于不用分析和目标网站繁琐的交互数据包,使用方便加上较高的效率以及一定的反反爬虫特点,在针对特定网站内容爬取上,应用较多。

由于自己最近的一个项目需求,对WebDriver进行了学习和应用,为了保持和系统后台语言的一致性(后台使用spring框架),我选用的Java作为开发语言。WebDriver基本的使用就不累述了,网上一搜一大把的,这里主要分享一下在使用过程中遇到的坑以及解决方案。

0x01 元素不可交互(element not interactable)

以国外知乎quora的登陆页面为例,想要在Email输入框中填写信息,下图红框中:

edc073c049317b76e18313c3c65bbea3.png

若按照WebDriver官方的文档操作的,就会抛出"element not interactable"的异常,代码如下:

f84d722ffbe3958fcb1244c5c844ca22.png

解决方法是使用Actions来进行操作,代码如下:

587566c092716a3cacefa4e5989c5bfa.png

建议所有类似的操作,都直接使用Actions来进行操作,避免出现类似的问题。

0x02 内嵌iframe标签

有一些网页会通过内嵌iframe标签的方法,来实现某些功能,如果直接操作iframe标签中元素,会抛出"找不到元素(no such element)"的异常。比如163邮箱的注册页面:

a48757a5cc9ad60afabad09da136b8c4.png

如果直接操作红框中的元素,想在其中输入用户名,则会抛出异常。这个原因就是由于该元素在一个iframe中:

80022a8fd6303eb64194275947b54928.png

此时的解决方案就是WebDriver提供的switchTo()方法,切换到该iframe中,再去操作目标元素,关键代码如下:

3b36bb056b14503c305df3c3c9b6cdab.png

0x03 下拉框问题

某些下拉框不能按照常规的流程来处理,即找到元素然后再点击,用代码表示就是下面这样的:

62b99470e41f394bef8cff73e473baa9.png

一个例子就是国外社交网站snapchat的注册页面,其手机号的国际区号选择就是这样一个下拉框:

b8f66b0ae7963a8dd2be11432e918312.png

如果按照常规流程,会抛出找不到元素的异常。

此时解决方案是使用WebDriver提供的Select类,关键代码如下:

b946465f51660149cba24d18274fc74f.png

by:会飞的猫

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值