使用 Selenium 选择菜单元素

时间:2021-02-24 13:05:59

标签: java html selenium selenium-webdriver

我想在 Java 应用程序中使用 Selenium 选择下拉菜单的一个元素。 我尝试了多次使用 Select、List < WebElement > 等...但都没有成功。 网页的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 个答案:

答案 0 :(得分:0)

您的定位器有误,您对 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");
相关问题