判断所查找的元素是否存在,遇到了问题,求帮助!
本帖最后由 OverTimeDog 于 2015-11-28 17:55 编辑<div class="mod-select-licence">
<a target="_self" href="/bmp/vender/qualificationbind?license_type=incoming_certificate,hygiene_certificate&item_id=6146475799328406720&id=10126&lic_id=3947733990452259872&flow=#list">选择已经添加过的内容</a>
</div>
因为上面一段代码在一个页面中有时存在,有时候不存在,所以我想用if else判断,当它存在的时候执行一部分操作,不存在的时候执行另一部分操作
但是现在页面不存在这个文案的时候,程序总是报错,用了很多方法都不行
试了调用下面这个方法,还是报错!
public static boolean isElementExist(By by){ try{ driver.findElement(by); return true; } catch(NoSuchElementException e){ return false; } }求助各位大神,到底应该怎么写,才能正确的执行!
这个问题值得关注
不懂帮顶 程序总是报错,无图无真相:) wuxi88 发表于 2015-11-30 11:16
程序总是报错,无图无真相
就是没有找到元素啊...因为这个元素的判断我写在了if里面,这段文字连接有时候有,有时候没有,我的问题就是找不到元素的时候如何能继续执行 你这么设计有漏洞的因为的if,else语句中的true or false还是根据最后driver.findElement()去找元素再判断存不存在,这个本来就不对,如果元素存在那没问题返回值可以是true,元素不存在,driver.findElement()本身就会跑出异常,返回false毫无意义根本不会执行到那边,判断元素存不存在本身就是检查点,这种存在和不存在后的操作应该要拆分成不同的用例,如果元素会显示出来,只是时间问题那你就加上等待,等元素出现在操作 joykao 发表于 2015-11-30 13:47
你这么设计有漏洞的因为的if,else语句中的true or false还是根据最后driver.findElement()去找元素再判断 ...
大神 你说的确实很对,其实我就是想判断不管元素是否找到,都能够把程序执行下去。我说的这个问题不是时间问题,如果这个页面没有文本链接,就不会再有,如果有这个文本链接,就一直有。所以我说的这种情况,就没有办法执行下去了是么? 给你提供一个思路,看看能不能解决,你不是说他时有时没有嘛,执行了某操作之后等待X秒中,然后在执行的boolean方法,这样或许可以解决。 wuxi88 发表于 2015-11-30 17:07
给你提供一个思路,看看能不能解决,你不是说他时有时没有嘛,执行了某操作之后等待X秒中,然后在执行的boo ...
请问等待几秒钟的意义是...?我是进入那个页面就会知道有没有那个文本链接...显示不显示跟等待几秒没什么关系呀 持续关注此问题,希望有大神能给点思路! 持续关注此问题,希望有大神能给点思路! 可以通过时间来控制, 使程序可以执行下去:
看看以下对你有没有用:
public static WebElement waitUntilElementDisplay(int waittime, String xpath) throws Exception {
long nowTime = System.currentTimeMillis();
WebElement webe = null;
while ((System.currentTimeMillis()- nowTime)/1000 < waittime){
try{
webe = driver.findElementByXPath(MyUtils.getXpath(xpath));
if(webe.isDisplayed()==true){
break;
}else{
Thread.sleep(1000);
}
}catch(NoSuchElementException e ){
System.out.println("Wating for.." + (System.currentTimeMillis()- nowTime)/1000 + "..seconds; " );
Thread.sleep(1000);
}
}
return webe;
} 增加等待时间:等待页面加载完成
然后按照你写的if else 去执行;若出现执行一部分操作,若没有出现执行另外一部分操作;
你出现的这个现象:有时候有,有时候没有;我觉得是页面没有加载完成导致;
一般这种就是增加等待时间,使网页加载完成,然后再去判断元素是否存在; 1. 先判断:”现在页面不存在这个文案的时候,程序总是报错“ 文案是否存在;
2. 再存在时引用返回值信息
3.不存在时,返回值设置一个特定值,给一个输出信息;
4.也可以使用宏定义 支持:::::增加等待时间:等待页面加载完成 后再去查找页面元素
页:
[1]