WebDriver:检查元素是否存在?

如何检查Web驱动程序是否存在元素?

使用尝试捕获真的是唯一可能的方法吗?

boolean present;
try {
   driver.findElement(By.id("logoutLink"));
   present = true;
} catch (NoSuchElementException e) {
   present = false;
}

答案 1

您也可以执行以下操作:

driver.findElements( By.id("...") ).size() != 0

这节省了令人讨厌的尝试/捕获

附言

或者更准确地说,通过在这里@JanHrcek

!driver.findElements(By.id("...")).isEmpty()

答案 2

我同意Mike的答案,但是如果没有找到可以打开/关闭的元素,则有一个隐含的3秒等待,如果您经常执行此操作,这将非常有用:

driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);
boolean exists = driver.findElements( By.id("...") ).size() != 0
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

将其放入实用程序方法中应该可以提高性能,如果您正在运行大量测试