selenium webdriver中的陈旧元素异常

时间:2016-11-14 10:56:50

标签: java eclipse selenium selenium-webdriver

我尝试自动化一个场景,条件是我必须选择所有下拉选项,我必须逐个点击这些选项。我尝试使用代码,但它只点击第一个选项,。并显示错误,因为陈旧元素不可点击。 请帮忙。

2 个答案:

答案 0 :(得分:0)

如果我找到一个元素,则会发生

StaleElementException,DOM会更新,然后我会尝试与该元素进行交互。

那我该如何处理呢?使用以下单击方法尝试多次单击元素:

public boolean retryingFindClick(By by) {
        boolean result = false;
        int attempts = 0;
        while(attempts < 2) {
            try {
                driver.findElement(by).click();
                result = true;
                break;
            } catch(StaleElementException e) {
            }
            attempts++;
        }
        return result;
}

here获取此优秀解决方案。

答案 1 :(得分:0)

当您从下拉列表中选择一个选项时,您的DOM也会得到更新。所以,你也需要更新你的对象。请参阅示例代码段:

    Select select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); // you may use any locator of your choice
    List<WebElement> options = select.getOptions();

    for(WebElement option : options){
            select.selectByVisibleText(option.getText());

            //re-assign your select object since your page has been reloaded after selecting an option 
            select =   new Select(driver.findElement(By.cssSelector("your dropdown's locator")));
     }