java - 断言网络元素不存在 - 快速解决方案?

标签 java webdriver nosuchelementexception

我需要在测试中多次断言某个 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/

相关文章:

java - 在没有指针的情况下用 C 编写二叉搜索树

java - Redisson 中仅使用参数化构造函数的类的对象反序列化

java - 如何使用 selenium webdriver java 从城市字段的 GoIbibo 中的自动选择下拉列表中选择元素

python - selenium webdriver python - 如果自定义编写的 python 代码中存在错误,则使 selenium 测试用例失败

java - Craps Project - 调试不明显的语法错误

java - IntelliJ IDEA 13 使用 Java 1.5,尽管设置为 1.7

java - CalendarView 始终返回当天,忽略用户选择的内容

selenium-webdriver - 如何使用 Dart 的 webdriver 跟踪网络流量

java.util.NoSuchElementException - 扫描仪读取用户输入

java - 具有泛型返回的方法中出现类型不匹配错误(为什么我必须在此方法中强制转换为泛型类型,而不是在类似的方法中?)