如果菜单项显示为下拉列表,如何选择菜单项列表中的项?我尝试sendKeys输入像“Brown Mustard”这样的文本,但是当我点击提交按钮时它会清除。我知道我应该能够在现场输入它,但WebDriver sendKeys不起作用,所以如果你有关于如何从列表菜单项中选择的建议,非常感谢!
这是文本字段的html片段以及输入“B”时显示的菜单项
<input id="combobox0-text" class="ui-autocomplete-input ui-widget
ui-widget-content tableRightFormTextField" autocomplete="off"
role="textbox" aria-autocomplete="list" aria-haspopup="true">
<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all"
tabindex="-1">Bro<strong>w</strong>n Mustard</a></li>
<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all"
tabindex="-1">Bro<strong>w</strong>ntop</a></li>
答案 0 :(得分:2)
你可以尝试使用wait,
new WebDriverWait(driver, 60).until(ExpectedConditions.visibilityOfElementLocated(By.id("combobox0-text"))).clear();
driver.findElement(By.id("combobox0-text")).sendKeys("Brown Mustard");
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("li.ui-menu-item"))).click();
上面的代码将清除input field
和type in the required item
并等待菜单项出现在下拉列表中......,第3个语句将点击menu item
..
答案 1 :(得分:1)
这就是它的工作方式:
driver.FindElement(By.Id("combobox0-text")).Clear();
driver.FindElement(By.Id("combobox0-text")).SendKeys("bro");
driver.FindElement(By.CssSelector("li.ui-menu-item")).Click();
仅供参考:发送密钥后,它将选择第一个/顶部菜单项。因此,如果要选择特定项目,请键入更多键。
答案 2 :(得分:1)
输入B后,您可以创建菜单项的选择对象,然后根据可见文本
选择项目import org.openqa.selenium.support.ui.Select;
//your code before entering B
Select menu = new Select(driver.findElement(By.id("combobox0-text")));
menu.selectByVisibleText("Brown Mustard");