Java 使用Selenium从具有相同类名的ajax下拉元素中选择值

Java 使用Selenium从具有相同类名的ajax下拉元素中选择值,java,ajax,selenium,drop-down-menu,selenium-webdriver,Java,Ajax,Selenium,Drop Down Menu,Selenium Webdriver,我试图从两个Ajax下拉字段中选择一个特定值。但是这两个ajax值容器具有相同的类名“ac_results”。因此,只选择第一个ajax下拉字段中的值,而不标识第二个ajax下拉字段中的值。请在这方面帮助我。 HTML代码: 你可以用这样的东西 //div[@class='ac_results'][0] // For first Drop Down //div[@class='ac_results'][1] // For second Drop Down or List<WebElem

我试图从两个Ajax下拉字段中选择一个特定值。但是这两个ajax值容器具有相同的类名“ac_results”。因此,只选择第一个ajax下拉字段中的值,而不标识第二个ajax下拉字段中的值。请在这方面帮助我。 HTML代码:


你可以用这样的东西

//div[@class='ac_results'][0] // For first Drop Down
//div[@class='ac_results'][1] // For second Drop Down

or
List<WebElement> dropDowns = driver.findElements(By.className('ac_results'));
WebElement dropDownOne = dropDowns.get(0); // perform further action using this WebElement
WebElement dropDownTwo = dropDowns.get(1); // Second drop down

我已经试过了,但是没有得到web元素列表

它的谷歌搜索标签测试脚本,其中只搜索随机的东西:ran 我的代码:

@Test
enter code herepublic void checkDropDownofSearchBox(){
    int i = 0;
    WebElement dropDown = driver.findElement(By.className("sbdd_a"));
    WebElement ajaxHolder1 = dropDown.findElement(By.className("sbdd_b"));

    List<WebElement> ajaxValues1 = ajaxHolder1.findElements(By.tagName("li"));

    for (WebElement value1 : ajaxValues1) {
        System.out.println(value1.getText());
        i++;
    }
    System.out.println(i);
}

您尝试过使用xpath吗?@HelpingHands否我没有使用xpath。那么您应该试试。您共享的HTML不是实际的下拉列表,您可能正在使用某个插件/框架生成下拉列表。@HelpingHands:我尝试过xpath,但没有得到任何uchelementException错误。我尝试了这两种解决方案,使用xpath解决方案时获取org.openqa.selenium.NoSuchElementException。以及为第二个解决方案获取IndexOutOfBound异常。请帮我解决这个问题。@ChetanKumarT:尝试显式等待。@ManaliJ:获取xpath//div[@class='ac_results']][0]的NoSuchElementException,所以我认为显式等待不起作用。@ChetanKumarT似乎你在做错事。是否尝试打印下拉列表的大小(如果为0)。然后您没有正确共享代码,如果代码为1,则重新检查第二个下拉列表是否可见/启用。如果是2,则应该可以工作。HTML代码:HTML: