我是Selenium Web Driver的新手,无法在列表框中选择元素并收到以下错误:
org.openqa.selenium.NoSuchElementException:无法找到元素:{“method”:“id”,“selector”:“ext-element-13”}
WebElement item = launch.driver.findElement(By.id("ext-element-13"));
Select page_dropdown = new Select(item);
for(int i=0; i<page_dropdown.getOptions().size(); i++)
{
page_dropdown.selectByIndex(i);
System.out.println("Page drop down having values " + page_dropdown.getFirstSelectedOption().getText());
}
<div id="boundlist-1123" class="x-boundlist x-boundlist-floating x-layer x-boundlist-default x-border-box" tabindex="-1" style="width: 215px; right: auto; left: 574px; top: 140px; z-index: 19000; height: 300px;" data-componentid="boundlist-1123">
<div id="boundlist-1123-listWrap" class="x-boundlist-list-ct x-unselectable" data-ref="listWrap" style="overflow: auto; height: 299px;">
<ul id="boundlist-1123-listEl" class="x-list-plain" aria-disabled="false" aria-hidden="false" role="listbox" data-ref="listEl">
<li id="ext-element-13" class="x-boundlist-item x-boundlist-selected" unselectable="on" role="option" tabindex="-1" data-recordindex="0" data-recordid="3" data-boundview="boundlist-1123">ABC Program : Summary</li>
<li class="x-boundlist-item" unselectable="on" role="option" tabindex="-1" data-recordindex="1" data-recordid="4" data-boundview="boundlist-1123">ABC-001: Poor Control</li>
<li class="x-boundlist-item" unselectable="on" role="option" tabindex="-1" data-recordindex="2" data-recordid="5" data-boundview="boundlist-1123">ABC-002: Low Density </li>
答案 0 :(得分:0)
根据提供的HTML代码,我预计它不是选择下拉列表。所以选择命令可能无法在这里工作..
其次,如果我是正确的
<ul id="boundlist-1123-listEl" class="x-list-plain" aria-disabled="false" aria-hidden="false" role="listbox" data-ref="listEl">
是你的下拉位置,下面是一个选项正确吗?
<li id="ext-element-13" class="x-boundlist-item x-boundlist-selected" unselectable="on" role="option" tabindex="-1" data-recordindex="0" data-recordid="3" data-boundview="boundlist-1123">ABC Program : Summary</li>
这里你可能需要使用sendkeys
driver.findElement(By.xpath("//*[@role='listbox']")).sendKeys("ABC Program : Summary");
如果页面中有更多的列表框元素,你也可以在上面的代码中使用xpath = // * [@ data-ref ='listEl']
如果上面一个不起作用,只需尝试直接点击所需选项
driver.findElement(By.xpath("//*[contains(text(),'ABC Program : Summary')]")).click();
如果即使在一个以上也不起作用,那么你需要点击ul然后需要选项。
定位器可能有变化,如果他们不工作让我知道,会尝试另一个xpath