selenium webdriver + java 在进行元素定位时,元素不可见的问题(display:none)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-29 13:44   11   0

问题描述:在对浏览器页面元素进行定位时,有时无论用id,className还是xpath,

都报错:Element is not currently visible and so may not be interacted with

此时,打印该元素的isDisplayed(),如:

System.out.println(driver.findElement(By.className("xa-login")).isDisplayed());

此时后台打印结果为:false

说明此时当前页面被设置为不可见,所以找不到也无法对其进行操作。

解决办法:利用JavaScript语句,将该元素设置为可显示

在Eclipse里具体写法如下:

JavascriptExecutor js = (JavascriptExecutor) driver;//将driver转换为js

js.executeScript("document.getElementsByClassName('xa-login')[0].style.display='block'");

划重点1:document.getElementsById/ClassName...都可以,看元素提供了哪一项,在使用ClassName时要注意是 否有重复的名字,若有,会报错或者找错;

划重点2:document.getElementsByClassName(‘?’),?的位置是想要更改的元素的ClassName;

划重点3:[0],是选择的要更改的项,我的例子中,getElementsByClassName只检测出一项,所以更改该项,如果 检测出若干项,要仔细比对自己要修改的项的位置;

划重点4:display='block',block关键字将display设置为可见,相反的,如果想将display设置为不可见,可通过

display='none'实现。


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP