4

一旦它显示为下拉菜单,如何在菜单项列表中选择一个项目?我尝试使用 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>
4

3 回答 3

2

您可以尝试使用等待,

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 fieldandtype in the required item并等待菜单项出现在下拉菜单中......,第三条语句将点击menu item..

于 2013-10-22T04:46:32.530 回答
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");
于 2012-08-05T01:02:24.307 回答
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();

仅供参考:它应在发送密钥后选择第一个/顶部菜单项。因此,如果您想选择特定项目,请键入更多键。

于 2012-08-01T09:35:08.213 回答