gpt4 book ai didi

java - 使用 for 循环的嵌套下拉菜单会产生过时的元素引用错误

转载 作者:行者123 更新时间:2023-11-30 10:13:08 25 4
gpt4 key购买 nike

我想知道如何使用 java 使用 selenium webdriver 嵌套下拉菜单,即我有 2 个下拉菜单,这些下拉菜单可以一个接一个地嵌套吗?在为下拉列表循环 2 次后,它显示陈旧的元素引用错误

我写了下面的代码:

Select drpdwns6 = new Select(driver.findElement(By.xpath("//*[@id=\"MainContent_ddlBillable\"]")));
List <WebElement> sels6 = drpdwns6.getOptions();
sels6.size();
for(int s6=0;s6<sels6.size();s6++) {
drpdwns6.selectByIndex(s6);
System.out.println("selected value"+s6);

Select drpdwns7 = new Select(driver.findElement(By.xpath("//*[@id=\"MainContent_ddlofflinestatus\"]")));
List <WebElement> sels7 = drpdwns7.getOptions();
sels7.size();
for(int s7=0;s7<sels7.size();s7++) {
drpdwns7.selectByIndex(s7);
System.out.println("selected value"+s7);
}
}

最佳答案

我的猜测是从下拉列表中选择选项会刷新 DOM,因此会抛出异常。您需要在每次迭代中重新定位下拉菜单

Select drpdwns6 = new Select(driver.findElement(By.id("MainContent_ddlBillable")));
int drpdwns6Size = drpdwns6.getOptions().size();
for(int s6 = 0 ; s6 < drpdwns6Size ; s6++) {
drpdwns6 = new Select(driver.findElement(By.id("MainContent_ddlBillable")));
drpdwns6.selectByIndex(s6);
System.out.println("selected value"+s6);

Select drpdwns7 = new Select(driver.findElement(By.id("MainContent_ddlofflinestatus")));
int drpdwns7Size = drpdwns7.getOptions().size();
for(int s7 = 0 ; drpdwns7Size ; s7++) {
drpdwns7 = new Select(driver.findElement(By.id("MainContent_ddlofflinestatus")));
drpdwns7.selectByIndex(s7);
System.out.println("selected value"+s7);
}
}

作为旁注,如果您有一个 id,请使用 By.id 而不是 By.xpath

关于java - 使用 for 循环的嵌套下拉菜单会产生过时的元素引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51499128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com