Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 如何修复StaleElementReferenceException?_Java_Selenium Webdriver_Staleelementreferenceexception - Fatal编程技术网

Java 如何修复StaleElementReferenceException?

Java 如何修复StaleElementReferenceException?,java,selenium-webdriver,staleelementreferenceexception,Java,Selenium Webdriver,Staleelementreferenceexception,我尝试在下拉列表的所有选项之间进行迭代,第一个选项可以很好地工作。在第二个选项之后,我得到stale元素异常 以下是跟踪: org.openqa.selenium.StaleElementReferenceException:stale元素 引用:元素未附加到页面文档 下面是我的代码: WebElement element = login.clickonCustomer(); Select select = new Select(element); List<

我尝试在下拉列表的所有选项之间进行迭代,第一个选项可以很好地工作。在第二个选项之后,我得到stale元素异常

以下是跟踪:

org.openqa.selenium.StaleElementReferenceException:stale元素 引用:元素未附加到页面文档

下面是我的代码:

WebElement element = login.clickonCustomer();
        Select select = new Select(element);
        List<WebElement> listofelements = select.getOptions();
        for (int i = 1; i < listofelements.size(); i++) {
            String elementText = listofelements.get(i).getText();
            System.out.println(elementText);
            select.selectByVisibleText(elementText);
            login.ClickonLogin().click();
            Thread.sleep(3000);
            Accounts.clickonLogout().click();

        }
    }
WebElement=login.clickonCustomer();
选择=新选择(元素);
List-listofements=select.getOptions();
对于(int i=1;i
尝试将代码封装在try-catch块中

  try
    {
        //your code to execute
    }
    catch(StateElementException e)
    {
   //enter the code that causes stale element exception
    }

找到了解决方案。

   `element = login.customer();
    Select select = new Select(element);
    List<WebElement> listofelements = select.getOptions();
    // iterate through each and every option in the drop down
    for (int j = 1; j < listofelements.size(); j++) {
        Thread.sleep(3000);
        login.customer().click();
        String elementText = listofelements.get(j).getText();
        select.selectByVisibleText(elementText);
        login.loginbutton().click();
        Thread.sleep(3000);
        Assert.assertEquals(accounts.customername().getText(), elementText);
        accounts.logout().click();
        element = login.customer();
        select = new Select(element);
        listofelements = select.getOptions();
        }`
`element=login.customer();
选择=新选择(元素);
List-listofements=select.getOptions();
//遍历下拉列表中的每个选项
对于(int j=1;j
int j=1时的可能重复您正在跳过第一个元素,因为索引从
0
开始。您好,第一个元素是一个伪值,因此跳过并从索引1开始。谢谢你的发现和建议。谢谢你的帮助。