我需要断言我的测试中不存在多次webelement。我已在网站上搜索过此内容,并在答案中找到了我的代码中已有的内容:
try{
WebElement w = driver.findElement(By.id("warning"));
} catch (NoSuchElementException e){
return true;
}
return false;
我想知道是否有更快的方法?因为每当元素不存在时运行,捕获异常需要很长时间。我知道这是因为webdriver正在搜索整个页面中的元素,但仍然......更快的方式?
是否有可能以极低的超时使用WebDriverWait?
由于
答案 0 :(得分:2)
这是由于WebDriver中的隐式等待。为避免在未找到元素时等待,您需要在验证条件之前将隐式等待时间设置为零。
请参阅this以了解上述流程的实施情况。
答案 1 :(得分:1)
另一种选择是找到元素列表,然后检查列表的长度。
List<WebElement> warnings = driver.findElements(By.id("warning"));
if warnings.length() == 0 {
return true;
} else return false;
这样做的好处是无需等待driver
中指定的超时。希望是你的另一种选择。
答案 2 :(得分:0)
尝试此功能
boolean isElementExists(By elementSelector) {
return driver.findElements(elementSelector).size() > 0;
}