使用 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 驱动程序从下拉菜单中选择一个元素?
Selenium - Python - 选择 - 下拉菜单链接