selenium webdriver如何从列表菜单项中选择

时间:2012-07-31 22:56:55

标签: select selenium menu webdriver

如果菜单项显示为下拉列表,如何选择菜单项列表中的项?我尝试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>

3 个答案:

答案 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 fieldtype 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");