【问题标题】:Ignoring Exception忽略异常
【发布时间】:2020-05-15 15:38:39
【问题描述】:
当我尝试理解下面的代码时,我们将使用 WebDriverWait 来等待网页中的元素,以避免 NoSuchElementException,但是为什么我们在下面的代码中使用 ignoring(NoSuchElementException.class)?
WebDriverWait wait=new WebDriverWait(dr,20);
wait.ignoring(NoSuchElementException.class);
在这里忽略我们已经等待的目的是什么?何时使用忽略(异常)?
如果我的理解有误,请纠正我。
【问题讨论】:
标签:
java
selenium
selenium-webdriver
【解决方案1】:
当在给定时间后元素没有出现时它会忽略,并且您的测试不会中断,但是如果没有找到元素,那么忽略可能不合适
,一切都取决于您需要做什么,如果该元素的可见性是可选的,那么忽略是可以的,但是如果您的测试强制可见性,请不要使用忽略
【解决方案2】:
通常当我们在页面中等待一个元素时,我们不使用忽略。相反,我们使用“直到”。这为代码添加了一个条件。在满足此条件或您给出的时间到期之前,它不会抛出任何异常(或错误)。
例如:
JavaScript:
driver.wait(webdriver.until.elementLocated(webdriver.By.xpath('/html/body/header/div')),20000)
Java:
new WebDriverWait(driver,20).until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/header/div")))
这两个代码在 Javascript 和 Java 中做同样的事情。这里我们告诉 selenium 驱动程序等待 20 秒,如果页面中的元素未找到(我们的条件)然后抛出错误,如果在给定时间之前的任何时间找到元素(条件满足),它就不会等待并继续下一个代码。我希望它有所帮助。