使用 Selenium 选择菜单元素

Posted

技术标签:

【中文标题】使用 Selenium 选择菜单元素【英文标题】:Select menu element with Selenium 【发布时间】:2021-05-26 19:27:27 【问题描述】:

我想在 Java 应用程序中使用 Selenium 选择下拉菜单的元素。 我尝试使用 Select、List 等多次...均未成功。 网页的html是这样的:

<div class="margin-top_2">          
  <span class="right_column_2">
          <div id="f1:idSelectTipoDoc" class="ui-selectonemenu ui-widget ui-state-default ui-corner-all ui-helper-clearfix" style="vertical-align: middle; width: 198px;">
          <div class="ui-helper-hidden-accessible">
          <select id="f1:idSelectTipoDoc_input" name="f1:idSelectTipoDoc_input" style="vertical-align:middle">
          <option value="">Select a fruit</option><option value="A">Apple</option>
          <option value="T">Tangerine</option></select>
          </div>
          <input type="text" name="f1:idSelectTipoDoc_editableInput" class="ui-selectonemenu-label ui-inputfield ui-corner-all" tabindex="-1" style="cursor: pointer; width: 182px;">
          <div class="ui-selectonemenu-trigger ui-state-default ui-corner-right"><span class="ui-icon ui-icon-triangle-1-s"></span></div></div></span>
</div>

这是我最后一次尝试,但未选择下拉菜单中的元素:

//open the dropdown menu
WebElement tipo1 = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"f1:idSelectTipoDoc\"]/div[2]")));
tipo1.click();
// select the Apple line
WebElement tipo2 = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"f1:idSelectTipoDoc\"]")));
Select elem = new Select(tipo2);
elem.selectByVisibleText("Apple");

有人知道它为什么不工作吗?谢谢

【问题讨论】:

【参考方案1】:

您的定位器错误,您使用定位器作为 div 元素而不是选择。使用:

WebElement tipo2 = new WebDriverWait(driver, Duration.ofSeconds(5)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//select[@id=\"f1:idSelectTipoDoc_input\"]")));
Select elem = new Select(tipo2);
elem.selectByVisibleText("Apple");

【讨论】:

感谢您的建议。不幸的是,使用此代码我得到了:“线程中的异常“AWT-EventQueue-0”org.openqa.selenium.StaleElementReferenceException:无法解析节点引用:......”错误

以上是关于使用 Selenium 选择菜单元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 java 的 selenium Web 驱动程序从下拉菜单中选择一个元素?

04-selenium 八大元素定位方法

Selenium - Python - 选择 - 下拉菜单链接

请教各位大神,图片中这种下拉菜单如何使用selenium进行选择?

selenium基础(下拉菜单操作)

消息:尝试通过 Selenium 单击下拉菜单中的选项时,元素 <option> 无法滚动到视图中