创建一个函数来检查页面上是否存在元素。意图是等待一段指定的时间,然后返回false(如果不存在)。
public boolean isElementPresent(final WebElement element){
Wait<WebDriver> wait = new WebDriverWait(driver, 60);
return wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver webDriver) {
return element.isDisplayed() != false;
}
});
}
但是在未找到元素的情况下抛出异常
答案 0 :(得分:2)
它抛出异常,因为如果没有找到元素,findElement将抛出异常。它用于isDisplayed()方法。您可以先检查页面上是否有元素,然后检查是否显示。使用以下方法进行第一次检查。
driver.findElements(byLocator).size>0
答案 1 :(得分:0)
以下是粗略的解决方案。但它仍然有效:p
public boolean isElementPresent() {
try {
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocatedBy(By.id(""));
return true;
} catch (TimeOutException e) {
return false;
}
}
当我们使用WebDriverWait类等待网页中存在元素时,会在指定时间后抛出TimeOut异常。我们抓住它并返回false。如果没有抛出异常(如果找到了元素),我们返回true。
如果要查看元素是否已启用或显示,请浏览与WebElement关联的isDisplayed或isEnabled方法。但请注意,如果网页中没有实际存在该元素,则会引发异常。
答案 2 :(得分:0)
这是另一种不那么“野蛮”的方法: -
public boolean isElementPresent() {
List<WebElement> elements = new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementsLocatedBy(By.id(""));
if (elements.isEmpty()) {
return false;
} else {
return true;
}
}
答案 3 :(得分:0)
这会对你有帮助。
public boolean fncCheckElement() {
try {
WebElement element = (new WebDriverWait(driver,1)).until(ExpectedConditions.presenceOfElementLocated((By.id("ID"))));
system.out.println("Element is present in web page")
return true;
} catch (Throwable e) {
ex.printStackTrace();
system.out.println("Element is not present in web page")
return false;
}}
享受!