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

Select selenium webdriver如何从列表菜单项中选择,select,selenium,menu,webdriver,Select,Selenium,Menu,Webdriver,当菜单项列表显示为下拉列表时,如何选择该项?我试着用sendKeys输入“棕色芥末”这样的文本,但当我点击submit按钮时,它就消失了。我知道我应该能够在字段中键入它,但WebDriver sendKeys不起作用,因此如果您对如何从列表菜单项中选择有任何建议,非常感谢 下面是文本字段的html片段,以及输入say“B”时出现的菜单项 Brown Browntop 这就是它的工作原理: driver.FindElement(By.Id("combobox0-text")).Clear();

当菜单项列表显示为下拉列表时,如何选择该项?我试着用sendKeys输入“棕色芥末”这样的文本,但当我点击submit按钮时,它就消失了。我知道我应该能够在字段中键入它,但WebDriver sendKeys不起作用,因此如果您对如何从列表菜单项中选择有任何建议,非常感谢

下面是文本字段的html片段,以及输入say“B”时出现的菜单项


  • Brown
  • Browntop

  • 这就是它的工作原理:

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

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

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

    您可以尝试使用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();
    

    上面的代码将清除
    输入字段
    键入所需项
    ,然后等待菜单项出现在下拉列表中…,第三条语句将单击
    菜单项

    使用webdriver.sendKeys()简单输入“b”时会发生什么情况您所指的下拉列表不是一个简单的组合框。您需要执行单击操作以显示下拉值。此外,不能简单地使用sendkeys方法输入文本。我回答了一个类似的问题。希望这有帮助。您好,谢谢,但它会抛出一个错误,元素此时不可单击。请尝试下载最新的firefox和selenium。如果它的公共网站比请提供链接。这只适用于使用元素的选择,因为selenium检查传递给Select的构造函数的WebElement是否实际上是元素。
    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();