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,不需要可以不加

posted @ 2020-03-04 16:03  萧兮易  阅读(6157)  评论(0编辑  收藏  举报