Java 如何修复StaleElementReferenceException?
我尝试在下拉列表的所有选项之间进行迭代,第一个选项可以很好地工作。在第二个选项之后,我得到stale元素异常 以下是跟踪: org.openqa.selenium.StaleElementReferenceException:stale元素 引用:元素未附加到页面文档 下面是我的代码: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<
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开始。谢谢你的发现和建议。谢谢你的帮助。