Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在这里我需要加上;等等,忽略;至;预期条件。所定位元素的可视性“;_Java_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

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,它将忽略该异常,并且不会将该异常抛出到外部

在以下两种情况中的一种情况下会引发过时元素引用异常,第一种情况比第二种情况更常见:

  • 该元素已被完全删除
  • 元素不再附加到DOM

  • 告诉
    FluentWait
    (这是
    WebDriverWait
    的基础)的实例忽略异常的一般效果是,如果在轮询DOM时发生此类异常,它将继续轮询,而不是让异常慢慢出现

    ExpectedConditions.visibilityOfElementLocated
    的特定情况下,显式忽略
    StaleElementReferenceException
    没有任何好处,因为
    ExpectedConditions.visibilityOfElementLocated
    已经忽略了它。如果元素过时,则其中有一个将使其返回
    null
    。我不知道旧版本的Selenium是否没有这个
    try。。。捕捉…
    块。对于Selenium的一些早期版本,可能需要明确告诉
    FluentWait
    忽略此异常

    等待元素可见,以使其不过时

    ExpectedConditions.visibilityOfElementLocated
    可能必须处理过时的元素。它分两步执行测试:

  • 获取与用户传递的定位器相对应的
    WebElement

  • 在此元素上调用
    .isDisplayed()


  • 在这两个步骤之间,可以更改DOM,以便在第二个步骤运行时,在第一个步骤中获取的元素已经过时(=不再在文档中)。这是一个非常小的风险窗口,但它是存在的,因此必须加以处理。

    您最近问了很多问题,如果您查看文档,这些问题是可以理解的。在问类似这样的基本问题之前,请用谷歌搜索你的问题并花些时间阅读。
    ignoring(StaleElementReferenceException.class)