【发布时间】:2018-08-16 17:05:30
【问题描述】:
此查询包含 2 个相关问题。 在进行下一步之前,我需要等待一个元素不可见,因此我尝试定义一个自定义方法,如下所示:
public void waitToDisappear(long timeOutInSeconds, WebElement element) {
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
wait.ignoring(org.openqa.selenium.NoSuchElementException.class);
wait.until(ExpectedConditions.invisibilityOf(element));
}
当我将此方法称为common.waitToDisappear(5, <WebElement>); 时,我得到的是Caused by: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element:。
但是,如果我使用定位器方法new WebDriverWait(world.driver, 5).until(ExpectedConditions.invisibilityOfElementLocated((By.xpath(someXpath)))),它可以正常工作,没有任何异常。
问题 1:NoSuchElementException 在 invisibilityOfElementLocated() 的 Selenium 实现中被忽略,但在 invisibilityOf() 中却没有。这有什么原因吗?但是,我认为这就是我得到例外的原因。如何等待元素(不是定位器)消失?
问题 2:为什么我得到 NoSuchElementException,即使我使用的是 wait.ignoring(org.openqa.selenium.NoSuchElementException.class);。这是使用wait.ignoring的正确方法吗?看来wait.ignoring() 在这里什么都没做。
提前感谢您的回答。
【问题讨论】:
标签: java selenium selenium-webdriver webdriver webdriverwait