【问题标题】:selenium webdriver how to select from list menu itemselenium webdriver如何从列表菜单项中选择
【发布时间】:2012-07-31 22:56:55
【问题描述】:

当菜单项列表显示为下拉菜单后,如何选择它?我尝试使用 sendKeys 输入“Brown Mustard”之类的文本,但是当我点击提交按钮时它会清除。我知道我应该可以在字段中输入它,但 WebDriver sendKeys 不起作用,所以如果您对如何从列表菜单项中进行选择有任何建议,非常感谢!

这是文本字段的 html sn-p 和输入“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>

【问题讨论】:

  • 当您使用 webdriver.sendKeys() 在输入字段中简单地输入“b”时会发生什么?
  • 您所指的下拉菜单不是一个简单的组合框。您需要执行单击操作才能显示下拉值。您也不能简单地使用 sendkeys 方法输入文本。已经回答了类似的问题 stackoverflow.com/questions/18181435/…>。希望这会有所帮助。

标签: select selenium menu webdriver


【解决方案1】:

您可以尝试使用等待,

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,等待下拉菜单中出现...,第三条语句会点击menu item..

【讨论】:

    【解决方案2】:

    这就是它的工作方式:

    driver.FindElement(By.Id("combobox0-text")).Clear();
    driver.FindElement(By.Id("combobox0-text")).SendKeys("bro");
    driver.FindElement(By.CssSelector("li.ui-menu-item")).Click();
    

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

    【讨论】:

    • 您好,谢谢,但它会引发错误,此时元素不可点击。
    • 尝试下载最新的 firefox 和 selenium。如果它的公共网站比请提供链接。
    【解决方案3】:

    输入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");
    

    【讨论】:

    • 这仅适用于使用 元素。
    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 2023-04-02
    • 2014-02-26
    • 2012-07-10
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多