无法从列表框中选择Selenium WebDriver中的元素

时间:2015-12-30 12:36:14

标签: java selenium selenium-webdriver

我是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>

1 个答案:

答案 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