Selenium:如何验证元素是否存在

时间:2014-06-23 15:47:35

标签: selenium selenium-webdriver

场景:我有一个场景,比如在登录某个页面后,会间歇性地出现一个我需要点击的配置文件更新按钮。事情就好像如果那个按钮出现我必须点击否则我必须离开那个部分然后继续。我已经编写了一个逻辑来处理下面的场景。

public boolean isElementPresent(By locatorKey) {
 try {
 getDriver().findElement(locatorKey);
 return true;
 } catch (org.openqa.selenium.NoSuchElementException e) {
 return false;
 }
 }

如果该元素出现,它将返回true,否则它将返回false ..上面的代码工作正常...但问题是它需要大约一分钟才能返回true或false..suppose我用过在我的脚本中有五个位置,所以不必要我脚本等待5分钟...我也尝试了以下代码

getDriver().findElement(locator).isDisplayed();

但我面临同样的问题......代码工作正常,但也需要大约1分钟才能返回命令......

有没有有效的方法来处理这种情况而无需等待一分钟才能获得状态?

2 个答案:

答案 0 :(得分:2)

改为使用方法findElements,并检查返回的列表是否为空:

return !getDriver().findElements(locatorKey).isEmpty();

请注意,此处不需要try/catch条款。

答案 1 :(得分:0)

barak manos对你的问题有一个非常可行的答案,但是如果你想避免布尔反转,可以选择以下方法:

public boolean isElementPresent(By locatorKey){
    return (getDriver().findElements(locatorKey).size() > 0);
}

与他的解决方案一样,这不需要try / catch,因为如果找不到定位器或者过时,findElements()将返回一个空列表。

同样,不要在这里减损巴拉克马诺斯。这只是另一种解决方案。