Selenium定位div弹框元素—使用JS代码定位
了解div弹框特点:
1、div弹框按钮和普通元素定位方式一样;
2、定位到div弹框还得判断这个弹框是否被隐藏,一般情况下div弹框都会有style=" display: none;"属性;
3、如果div弹框出现display属性就会隐藏,也就是说没有display属性 ,这时div弹框出现;
4、如果找到按钮但定位不到,这时可以设置等待时间,等待页面加载完成时再定位元素。
使用js方式判断div弹框是否隐藏
/**
*1、写一段js查找div弹框style属性
*2、js 加return关键字在执行的时候可以返回结果
*/
String js = "return document.getElementsByClassName('el-message-box__wrapper')[0].style"; //执行js后得到的结果是List,所以将结果转换为List List<Object> resultList = (List<Object>) ((JavascriptExecutor) driver).executeScript(js); //如果list.size()==1,就点击弹框的按钮(根据实际情况写)
if(resultList.size()==1){ //如果有弹框定位"确定"按钮,点击确定 ele.findElementByXpathClick("//button[contains(@class,'el-button--primary')]", driver); Thread.sleep(3000); }else{ //....... }
一开始获取不到js的结果,后面查资料可以加“return”获取到结果
driver.executeScript(js):执行js代码
如果不加return 执行js后返回值是null
如果加return 执行js后返回值有WebElement、Long、Double、bool、String、List
注:如果需要返回值就加return,不需要可以不加