如何从" Span Type下拉菜单中选择值"在Selenium webdriver中
我可以使用XPath单击下拉列表,但无法从下拉列表中选择值。 我点击Dropdown的XPath是:
driver.findElement(By.xpath(".//*[@id='minexpButton']/span")).click();
当我在Selenium中使用上述代码时,下拉列表已展开,但我无法从下拉列表中选择值
我的HTML代码如下:
<span id="minexpButton" class="yui-button yui-menu-button yui-button-active yui-menu-button-active" style="background-color: rgb(255, 255, 255); display: -moz-inline-box;">
<div id="minexpSelectionMenu" class="yui-module yui-overlay yui-button-menu yui-menu-button-menu" style="z-index: 1003; visibility: visible; left: 367.683px; top: 1050.6px;">
<div class="bd">
<div class="selectionMenu">
<div class="ulDiv" style="overflow: auto; width: 64px; height: 210px;">
<div class="liDiv selected">
<a class="txt_black heading_4" href="#" tabindex="-1" target="_self">- Min -</a>
</div>
<div class="liDiv">
<a class="txt_black heading_4" href="#" tabindex="-1" target="_self">0</a>
</div>
<div class="liDiv">
<a class="txt_black heading_4" href="#" tabindex="-1" target="_self">1</a>
</div>
如何从下拉列表中选择值?
答案 0 :(得分:0)
您可以使用以下功能从下拉列表中选择值 下面的函数将从下拉列表中选择0值,您可以参数化以下行 (temp.equals(&#34; 0&#34;)并传递您要选择的值
List<WebElement> element = driver.findElements(By.cssSelector(".txt_black.heading_4"));
for (int i = 0; i < element.size(); i++) {
String temp = element.get(i).getText();
if (temp.equals("0")) {
element.get(i).click();
break;
}
}
答案 1 :(得分:0)
我相信您正在自动化的应用程序正在使用YUI库。
在YUI库中注意,单击包含'yui-menu-button'的类的每个元素将显示下拉列表的菜单项。这些菜单项包含在包含类'yui-menu-button-menu'的DIV元素中。
您的案例中的应用程序架构正在实现后缀。如果我错了,我相信并纠正我,页面上所有下拉列表的ID都采用以下格式:
[dropdownName]按钮&amp;的 [dropdownName] SelectionMenu 强>
例如。
<span id="countryButton" class="...">
</span>
....
<div id="countrySelectionMenu" class="">
....
</div>
因此下拉列表的实际名称/ ID为“country”。在上面的例子中,它是'minexp'。 (我认为最低经验。因此,DropdownID是'minexp',而不是'minexpButton'或'minexpSelectionMenu'。它可能类似于应用程序中的其他元素。请对应用程序进行架构审查,以便更好地理解元素ID和YUI图书馆。
以下是如何从YUI SelectMenu(下拉列表)中进行选择:
// Remember dropdownID is the 'minexp' and not 'minexpButton' or 'minexpSelectionMenu'
public void selectOption(String dropdownID, String optionText) {
// Get the dropdown button
WebElement dropdownButton = driver.findElement(By.id(dropdownID & "Button"));
// Click on the dropdown button, this will make the selection menu visible
dropdownButton.click();
// Get the dropdown selection menu, since it is now visible you can select from it
WebElement dropdownMenu = driver.findElement(By.id(dropdownID & "SelectionMenu"));
// Verify selection menu is visible
if(dropdownMenu.isDisplayed()) {
List<WebElement> menuItems = dropdownMenu.findElements(By.tagName("a"));
for(WebElement menuItem : menuItems) {
if(menuItem.getText().trim().toLowerCase().equalsIgnoreCase(optionText.trim().toLowerCase())) {
menuItem.click();
break;
}
}
}
}
在YUI Library for Dropdown上尝试并测试。
我希望这有帮助。 :)
答案 2 :(得分:0)
请尝试以下代码:
driver.findElement(By.id(“dropdownField”)).sendKeys(“mention text of required
value from dropdown”); //send required option in dropdown field
driver.findElement(By.id(“option1”)).click();
或尝试使用以下代码:
List<WebElement> options = driver.findElements(By.xpath(“”));
for(WebElement option : options) {
if (option.getText().contains(“mention text of required value from dropdown”))
{
option.click();
break;
}
请参阅 link 了解更多详细信息 - 如何在不使用 Selenium 中 Select 类的方法的情况下在下拉列表中选择特定值。