Java 在这里我需要加上;等等,忽略;至;预期条件。所定位元素的可视性“;
我不理解以下概念:Java 在这里我需要加上;等等,忽略;至;预期条件。所定位元素的可视性“;,java,selenium,selenium-webdriver,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,我不理解以下概念: wait.ignoring(StaleElementReferenceException.class).until (ExpectedConditions.visibilityOfElementLocated(By.xpath("bla bla"))); 换句话说,为什么我需要这个部分: ignoring(StaleElementReferenceException.class) 当 等待元素可见,这样它就不会过时。简单地说,您可以像这样理解上面的代码 ignoring
wait.ignoring(StaleElementReferenceException.class).until
(ExpectedConditions.visibilityOfElementLocated(By.xpath("bla bla")));
换句话说,为什么我需要这个部分:
ignoring(StaleElementReferenceException.class)
当
等待元素可见,这样它就不会过时。简单地说,您可以像这样理解上面的代码
ignoring(StaleElementReferenceException.class)
上面的ignore用于忽略执行wait时可能发生的特定异常。例如,在等待某个元素时,如果发生StaleElementReferenceException,它将忽略该异常,并且不会将该异常抛出到外部
在以下两种情况中的一种情况下会引发过时元素引用异常,第一种情况比第二种情况更常见:
告诉
FluentWait
(这是WebDriverWait
的基础)的实例忽略异常的一般效果是,如果在轮询DOM时发生此类异常,它将继续轮询,而不是让异常慢慢出现
在ExpectedConditions.visibilityOfElementLocated
的特定情况下,显式忽略StaleElementReferenceException
没有任何好处,因为ExpectedConditions.visibilityOfElementLocated
已经忽略了它。如果元素过时,则其中有一个将使其返回null
。我不知道旧版本的Selenium是否没有这个try。。。捕捉…
块。对于Selenium的一些早期版本,可能需要明确告诉FluentWait
忽略此异常
等待元素可见,以使其不过时
ExpectedConditions.visibilityOfElementLocated
可能必须处理过时的元素。它分两步执行测试:
WebElement
.isDisplayed()
在这两个步骤之间,可以更改DOM,以便在第二个步骤运行时,在第一个步骤中获取的元素已经过时(=不再在文档中)。这是一个非常小的风险窗口,但它是存在的,因此必须加以处理。您最近问了很多问题,如果您查看文档,这些问题是可以理解的。在问类似这样的基本问题之前,请用谷歌搜索你的问题并花些时间阅读。
ignoring(StaleElementReferenceException.class)