java 如何从Selenium webdriver中的“范围类型下拉列表”中选择值

llmtgqce  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(115)

如何从Selenium webdriver中的"范围类型下拉列表"中选择值
我可以使用XPath单击下拉列表,但无法从下拉列表中选择值。单击下拉列表的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>

如何从下拉列表中选择值?

5lhxktic

5lhxktic1#

您可以使用以下函数从下拉列表中选择值
以下函数将从下拉列表中选择0值,您可以参数化以下行(temp.equals(“0”))并传递您想要选择的值

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;
        }
    }
g0czyy6m

g0czyy6m2#

我相信您正在自动化的应用程序正在使用YUI库。
注意在YUI库中点击每一个类包含'yui-menu-button'的元素将显示下拉菜单的菜单项。这些菜单项被 Package 在一个包含类'yui-menu-button-menu'的DIV元素中。
在您的案例中,应用程序的架构实现了一个后缀。我相信,如果我错了,请纠正我,页面上所有下拉列表的ID都是以下格式:

[下拉名称]按钮&[下拉名称]选择菜单

例如

<span id="countryButton" class="...">
</span>
....
<div id="countrySelectionMenu" class="">
....
</div>

因此下拉列表的实际名称/ID是“country”。在上面的例子中,它是“minexp”。(我认为是最低经验。因此DropdownID是“minexp”,而不是“minexpButton”或“minexpSelectionMenu”。它可能同样适用于应用程序中的其他元素。请对应用程序进行架构检查,以更好地理解元素ID和YUI库。
以下是您如何从YUI选择菜单(下拉菜单)中进行选择:

// 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上尝试和测试。
我希望这对你有帮助。:)

1mrurvl1

1mrurvl13#

请尝试以下代码:

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类的方法的情况下在下拉列表中选择特定值。

相关问题