【WebDriver】解决ElementNotVisibleException方法总结

1、首先排除是否是页面未加载完成的问题。页面响应时间比较慢,导致定位的元素还没加载出来,就会报错ElementNotVisible,这时可以在代码里加上一定的等待时间,如:Thread.sleep(3000) 。

2、其次排除是否是定位有问题,可以用chrome浏览器的xpath healper工具来验证

这里写图片描述
如上图,写的xpath能够定位到页面中相应的元素,定位到的元素黄色显示。

3、如果用xpath healper确定能定位到元素,但是跑用例的时候还是报元素不可见异常,这可能是由于用@class属性来定位,特别是class中含有复合类的定位时,也可能会报这个错误,这时可以用其它标签或属性来定位,也可以用xpath的绝对路径来定位

4、上面两步还不能解决的话,就可以检查该元素的样式或父级及以上元素是否含有不可显示属性,需要检查元素是否具备如下特性:

visibility!= hidden
display != none (is also checked against every parent element)
opacity != 0 (in rc2 this is no longer checked for clicking an element)
height and width are both > 0
for an input, the attribute type != hidden
如果有不符上面的特性之一,那么就用js脚本来处理,用js操作元素参考博客:http://blog.csdn.net/galen2016/article/details/56847545

5、还有一种情况,就是选取元素的时候,可能存在两个相同的,但一次只会用一个,这两个区别就有一个样式的属性是不可见的,这个时候选取元素时要去掉不可见属性,如下例子:

这里写图片描述

如上图,启用流程按钮滑到右边时,该元素增加了display:none属性,此时如要向左滑可以如下方法来定位
WebElement label = driver.findElement(By.xpath(“//div[@class=’el-switch__label el-switch__label’ and not(contains(@style,’display:none’))]”));

6、最后,可能是编写脚本流程没有按照正常的操作步骤来进行,导致操作的元素没有在当前页面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值