我正在尝试在搜索向导中测试自动完成功能,其中在发送搜索查询后,我必须点击顶部菜单项,该项目将显示为自动完成,就像在Google搜索中一样。
下面是我在搜索栏中输入Text
时显示的html结构:
<ul class="ui-autocomplete ui-autocomplete-icons ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox">
<li class="ui-menu-item" role="menuitem">
<a class="partition_item ui-corner-all" tabindex="-1">
<i class="autocomplete_icons autocomplete_city"></i>
<span><b>Text A</b></span>
</a>
</li>
<li class="ui-menu-item" role="menuitem">
<a class="partition_item ui-corner-all" tabindex="-1">
<i class="autocomplete_icons autocomplete_city"></i>
<span><b>Text B</b></span>
</a>
</li>
在这种情况下,我需要点击自动完成中的第一个菜单项Text A
。
以下是我在java中尝试的内容:
destinationInput.sendKeys(city);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ul.ui-autocomplete")));
List <WebElement> listItems = driver.findElements(By.className("partition_item"));
listItems.get(0).click();
但似乎没有任何事情发生。我在IndexOutOfBoundException
得到listItems.get(0)
,我猜是因为它无法在ul元素中获取锚标记。
我也经历过this answer,但无法将其合并到java中。请指导。
答案 0 :(得分:0)
尝试使用css选择器找到你的元素,像
一样wait.until(ExpectedConditions.visibilityOfElementLocated(By.Css(".ui-autocomplete")));
List <WebElement> listItems = driver.findElements(By.Css(".ui-menu-item"));
listItems[0].click();
不确定java语法,但应该可以。