Selenium WebDriver staleElementReferenceException Java

时间:2017-11-23 13:16:08

标签: java selenium selenium-webdriver exception-handling

随着Chrome浏览器和chromedriver的最新更新,我开始在WebDriver中获得 staleElementReferenceException
这应该由我的自定义Wait方法处理,但在某些情况下(极少数情况下)它仍然会发生。 这是我的等待方法:

public static WebElement getLoadedElement(String selector){
    final Wait<WebDriver> longWait =
        new FluentWait<WebDriver>(Driver.getDriver()).withTimeout(15, TimeUnit.SECONDS)
            .pollingEvery(1, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class)
            .ignoring(StaleElementReferenceException.class);
        final WebElement element = longWait.until(new Function<WebDriver, WebElement>() {
            @Override
            public WebElement apply(final WebDriver driver) {
                return driver.findElement(By.xpath(selector));
            }
        });
    return element;
}  

是否有其他方法可以在不必为所有基本WebDriver操作(例如.click(),. getText()等)添加包装器的情况下执行此操作?

我发现的唯一其他解决方案是创建一个计数器,并尝试以设定的间隔(0.5秒)反复找到该元素,但为此我在捕获多个异常时遇到问题。超时结束(计数器)。

检查.isClickable()也不是一个选项,因为我不想点击某些元素才能找到它们。

还有其他想法吗?我确定有人知道更好的解决方案!

0 个答案:

没有答案