selenium使用过程中遇到的“element not visiable”错误

时间:2022-08-30 23:31:52

PS:本博客selenium分类不会记载selenium打开浏览器,定位元素,操作页面元素,切换到iframe,处理alter、confirm和prompt对话框这些在网上随处可见的信息;本博客此分类主要记载一些工作中遇到的问题,以及一些经验,记载的这些都是在网上几乎没有,不容易找的。本人不屑于做搬运工,只做生产者。

今天在做项目的页面自动化时遇到了一个问题,现在把它以及解决方法记录下来。

背景流程:打开一个网页,在页面上字段填了内容,然后点击取消按键1,会跳出一个对话框,对话框里有取消按键2和确定按键2.就是在点击取消按键2时,程序报元素不可见错误。

当时看到这个错误时,我就注意了这个不是元素找不到错误,也就是说我定位到了元素,但是因为某种原因它隐藏了,展示不了。

我的第一个年头就是看看页面上这个对话框是不是放在ifream里,结果发现不是。

不过在这个过程里,我发现这个对话框在点击取消按键1之前是隐藏的,点击了之后才显示。所以其实错误提示很明显了“元素不可见”不就是元素是隐藏的吗?也就是那时候触发对话框显示后还没加载好,代码就开始点击取消按键2了。所以只要加上

if(!can.isDisplayed())
   Thread.sleep(1000);
这段代码就好了。其实之前没想到这个还因为我已经加了driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)这句话(页面没加载好久等待,最多等10s),看来这句话是只管页面元素加载了,也就是存在了,但是不管元素是不是显示。

所以以后遇到element not visiable或者not click之类的问题,首先就试试线程睡1s,如果不行,再找原因。