我需要在测试中多次断言某个 Web 元素不存在。我已经在网站上搜索过这个,并在答案中找到了我的代码中已有的内容:
try{
WebElement w = driver.findElement(By.id("warning"));
} catch (NoSuchElementException e){
return true;
}
return false;
我想知道是否有更快的方法?因为每次当元素不存在时运行,需要很长时间才能捕获异常。我知道这是因为网络驱动程序正在整个页面中搜索该元素,但仍然...有更快的方法吗?
是否可以以某种方式使用具有非常低的超时时间的 WebDriverWait?
谢谢
最佳答案
这是由于 WebDriver 中的隐式等待造成的。为了避免在未找到元素时发生这种等待,您需要在验证条件之前将隐式等待时间设置为零。
- 将implicity_wait设置为0,以便WebDriver不会隐式 等待。
- 找到元素后返回 True。捕获 当我们发现 NoSuchElementException 并返回 False 元素不存在而不是用 异常(exception)。
- 在操作完成后将implicitly_wait设置回10 完成,以便 WebDriver 将来会隐式等待。
参见this用于实现上述过程。
关于java - 断言网络元素不存在 - 快速解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403816/