使用带有Java的Selenium WebDriver检查元素不存在的最佳方法

我正在尝试下面的代码,但似乎不起作用…有人可以向我展示最佳方法吗?

public void verifyThatCommentDeleted(final String text) throws Exception {

new WebDriverWait(driver, 5).until(new ExpectedCondition<Boolean>() {

@Override

public Boolean apply(WebDriver input) {

try {

input.findElement(By.xpath(String.format(

Locators.CHECK_TEXT_IN_FIRST_STATUS_BOX, text)));

return false;

} catch (NoSuchElementException e) {

return true;

}

}

});

}

回答:

我通常使用两种方法(成对)来验证元素是否存在:

public boolean isElementPresent(By locatorKey) {

try {

driver.findElement(locatorKey);

return true;

} catch (org.openqa.selenium.NoSuchElementException e) {

return false;

}

}

public boolean isElementVisible(String cssLocator){

return driver.findElement(By.cssSelector(cssLocator)).isDisplayed();

}

请注意,硒有时可以在DOM中找到元素,但是它们是不可见的,因此硒将无法与其交互。因此,在这种情况下,检查可见性的方法会有所帮助。

如果要等到元素出现,我发现最好的解决方案是使用流畅的等待:

public WebElement fluentWait(final By locator){

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)

.withTimeout(30, TimeUnit.SECONDS)

.pollingEvery(5, TimeUnit.SECONDS)

.ignoring(NoSuchElementException.class);

WebElement foo = wait.until(new Function<WebDriver, WebElement>() {

public WebElement apply(WebDriver driver) {

return driver.findElement(locator);

}

});

return foo;

};

希望这可以帮助)

以上是 使用带有Java的Selenium WebDriver检查元素不存在的最佳方法 的全部内容, 来源链接: utcz.com/qa/397480.html

回到顶部