【WebDriver】解决ElementNotVisibleException方法总结

来源:互联网 发布:mac u盘安装win7教程 编辑:程序博客网 时间:2024/05/20 08:45

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 花洒喷头堵了怎么办 花洒分水器堵了怎么办 冲马桶水溅出来怎么办 吃了不熟的芋头怎么办 吃多了肚子胀气怎么办 吃多了胃胀气怎么办 红薯吃多了胀气怎么办 裙子贴在腿上怎么办 薄裤子静电吸腿怎么办 雪纺衬衫起静电怎么办 吃烤饼不松软是怎么办 1岁宝宝睡眠不好怎么办 3岁幼儿睡眠不好怎么办 2岁幼儿睡眠不好怎么办 2岁宝宝睡眠不好怎么办 9岁儿童睡眠不好怎么办 3岁宝宝老踢被子怎么办 4岁宝宝老踢被子怎么办 四线锁边机跳线怎么办 引流管伤口洞红怎么办 甘蔗卡在喉咙里怎么办 棉花被子生虫了怎么办 绗缝羽绒服钻毛怎么办 宝珠笔没墨水了怎么办 衣服上画的笔印怎么办 黑笔芯弄衣服上怎么办 圆珠笔油在皮上怎么办 不小心吞了水银怎么办 小孩吃了洗发露怎么办? 脸上被铅笔戳了怎么办 小孩吃了铅笔芯怎么办 小孩把橡皮吃了怎么办 用棉签掏耳朵里面疼怎么办 棉签头掉耳朵里怎么办 黑裤子老是粘毛怎么办 新买的裤子掉色怎么办 黑裤子容易粘毛怎么办 裤子粘了全部毛怎么办 纯棉裤子粘毛了怎么办 裤子粘毛怎么办怎么洗 黑裤子洗白了怎么办