问题描述:在对浏览器页面元素进行定位时,有时无论用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'实现。