如何使用selenium webdriver java读取下拉列表中存在的所有值列表?

时间:2012-12-24 11:44:07

标签: selenium-webdriver

请帮助我阅读Salesforce应用程序中目标类型下拉列表中显示的所有值列表:

HTML:

<select id="00N20000002gQI3" name="00N20000002gQI3" tabindex="3">
    <option value="">--None--</option>
    <option value="Asset Finance">Asset Finance</option>
    <option value="Barcap">Barcap</option>
    <option value="Barclaycard">Barclaycard</option>
    <option value="Barclays Wealth">Barclays Wealth</option>
    <option value="BGI">BGI</option>
    <option value="Cash Management">Cash Management</option>
    <option value="DCM">DCM</option>
    <option value="Debt">Debt</option>
    <option value="Deposit">Deposit</option>
    <option value="ECM">ECM</option>
    <option value="ESHLA">ESHLA</option>
    <option value="Financial Need Assessment">Financial Need Assessment</option>
    <option value="FX">FX</option>
    <option value="Generic">Generic</option>
    <option value="Individual Relationship">Individual Relationship</option>
    <option value="M&amp;A">M&amp;A</option>
    <option value="Managing Impairment">Managing Impairment</option>
    <option value="Managing RWAs">Managing RWAs</option>
    <option value="Marketing">Marketing</option>
    <option value="Overall Relationship">Overall Relationship</option>
    <option value="RSG">RSG</option>
    <option value="Sales Finance">Sales Finance</option>
    <option value="Trade">Trade</option>
</select>

请让我知道如何阅读下拉列表中的所有值...如果您可以分享对我们有帮助的代码。

3 个答案:

答案 0 :(得分:2)

以下是我之前用于按值选择选项的方法:

public static void selectInDropdownByValue(WebElement we, String val) {
    Select dropDown = new Select(we);           
    List<WebElement> theseOptions = dropDown.getOptions();
    for(WebElement option:theseOptions){
        if(option.getAttribute("value").equals(val)){
            option.click();  
        }
    }   
}

有时,对于某些菜单,这还不够。在这种情况下,您需要使用WebDriver“Action”来物理移动鼠标并单击鼠标按钮。

答案 1 :(得分:1)

您可以使用Select类的getOptions函数。 循环遍历收到的webelements列表并调用getText以获取可见选项......类似

Select sel = new Select(driver.findElement("yourlocator");
List of WebElements lst = sel.getOptions();
//iterate list with getText

答案 2 :(得分:0)

如果你使用它,它应该返回所有选项元素的数组:

element_array = driver.findElement(By.xpath("//select[@id='00N20000002gQI3']/option"))

所以你可以从这个数组中提取每个元素的文本。没有必要点击元素。

element_array[1].text
element_array[2].text

等等。