如何从Selenium webdriver中的“Span Type下拉列表”中选择值

时间:2014-11-01 12:43:56

标签: java selenium selenium-webdriver

如何从" 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>

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

3 个答案:

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