如何等待直到selenium中不再存在元素
我正在测试一个UI,在该UI中用户单击“删除”按钮,而表条目消失。因此,我希望能够检查表条目是否不再存在。
我曾尝试使用ExpectedConditions.not()
invert
ExpectedConditions.presenceOfElementLocated()
,希望它的意思是“期望不存在指定的元素”。我的代码是这样的:
browser.navigate().to("http://stackoverflow.com");new WebDriverWait(browser, 1).until(
ExpectedConditions.not(
ExpectedConditions.presenceOfElementLocated(By.id("foo"))));
但是,我发现即使这样做,我也TimeoutExpcetion
因一个NoSuchElementException
说法说元素“
foo”不存在。当然,我想要的是没有这样的元素,但是我不希望引发异常。
那么,如何等待直到元素不再存在?我希望有一个示例,该示例尽可能不依赖于捕获异常(据我所知,应出于异常行为而抛出异常)。
回答:
您还可以使用-
new WebDriverWait(driver, 10).until(ExpectedConditions.invisibilityOfElementLocated(locator));
如果你去通过源的它,你可以看到,无论NoSuchElementException
和staleElementReferenceException
进行处理。
/** * An expectation for checking that an element is either invisible or not
* present on the DOM.
*
* @param locator used to find the element
*/
public static ExpectedCondition<Boolean> invisibilityOfElementLocated(
final By locator) {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
return !(findElement(locator, driver).isDisplayed());
} catch (NoSuchElementException e) {
// Returns true because the element is not present in DOM. The
// try block checks if the element is present but is invisible.
return true;
} catch (StaleElementReferenceException e) {
// Returns true because stale element reference implies that element
// is no longer visible.
return true;
}
}
以上是 如何等待直到selenium中不再存在元素 的全部内容, 来源链接: utcz.com/qa/423495.html