2012-07-31 72 views
4

如何在菜单项列表中选择一项作为下拉菜单项?我尝试了SendKeys来输入像“Brown Mustard”这样的文本,但是当我点击提交按钮时它会清除掉。我知道我应该可以在字段中键入它,但WebDriver sendKeys不起作用,所以如果您有关于如何从列表菜单中选择的建议,非常感谢!selenium webdriver如何从列表菜单中选择项目

这里的文本字段的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

什么只需在输入字段中使用webdriver.sendKeys()输入“b”就会发生? – Arek 2012-08-01 07:49:59

+0

什么语言? Java的? – Arran 2012-08-01 09:38:01

+1

您所指的下拉列表不是简单的组合框。您需要执行点击操作才能显示下拉值。你也不能简单地使用sendkeys方法来输入文本。已经回答了类似问题。希望这可以帮助。 – Vinay 2013-10-22 05:17:05

回答

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(); 

FYI:要发送密钥后选择第一个/顶层菜单项。所以,如果你想选择一个特定的项目,请输入更多的键。

+0

嗨,谢谢,但它会抛出一个错误,元素此时不可点击。 – maximumride 2012-08-02 01:59:37

+0

尝试下载最新的Firefox和硒。如果其公共网站比请提供链接。 – iMatoria 2012-08-02 02:26:22

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"); 
+0

这只适用于使用元素。 – mschenk74 2013-09-18 10:13:40

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

相关问题