无法从“选择”下拉列表中的选项中读取文本

时间:2014-01-13 05:40:30

标签: java selenium selenium-webdriver

我正在尝试从下拉列表中获取所有选项元素,并在下拉列表中显示每个选项的文本。但是文字没有显示出来。如何获取下拉列表中选项的文本?

这是我到目前为止所尝试的:

 WebDriver d = new FirefoxDriver();
 d.navigate().to("https://www.salesforce.com/form/signup/freetrial-sales.jsp?d=70130000000EqoP&internal=true");

 Select s = new Select(d.findElement(By.id("CompanyEmployees")));

 List<WebElement> options = s.getOptions();

 for(WebElement option : options){
   System.out.println(option.getAttribute("title"));
   System.out.println(option.getText());
 }

这是HTML:

    <li class=" type-select">
        <div class="control-container ">
        <div class="label">
                <span class="required-marker">*</span>
            <label for="CompanyEmployees" id="CompanyEmployees_lbl">Employees</label>
        </div>

          <div class="field">
        <select name="CompanyEmployees" id="CompanyEmployees">
             <option value="">Employees</option>
                                                        <option value="3" title="1 - 5 employees">1 - 5 employees</option>
            <option value="12" title="6 - 20 employees">6 - 20 employees</option>
            <option value="50" title="21 - 100 employees">21 - 100 employees</option>
            <option value="250" title="101 - 500 employees">101 - 500 employees</option>
            <option value="2000" title="501 - 3,500 employees">501 - 3,500 employees</option>
            <option value="3500" title="3,501+ employees">3,501+ employees</option>
            </select>

</div>
    <div class="info">
        <label for="CompanyEmployees__c" id="CompanyEmployees_lel">Select the number of employees</label>
                <img src="https://secure2.sfdcstatic.com/common/assets/images/error-icon.png" alt="" border="0">
    </div>
</div></li>

提前致谢。

3 个答案:

答案 0 :(得分:0)

我使用了你的代码并且工作正常。我能够看到文本在我的控制台上打印出来。你正在使用哪个webdriver版本?我在2.38版本上查了一下。

答案 1 :(得分:0)

使用以下代码

        Select sel = new Select(element);
        List<WebElement> list =  sel.getOptions();
        for(int i=0;i<list.size(); i++)
        {
            System.out.println(list.get(i).getText());
        }

如果可能,也可以发布html代码。如果下拉列表不包含select标记,则无法使用select class。

答案 2 :(得分:0)

尝试:

List<WebElement> elements = driver.findElements(By.xpath("//select[@id='CompanyEmployees']//option"));
for (WebElement element : elements) {
        element.getText();
    }

或者:

WebElement yourSelect = driver.findElement(By.id("CompanyEmployees"));
List<WebElement> elements = new Select(yourSelect).getOptions();
for (WebElement element : elements) {
    element.getText();
}

如何获取选择选项文字:

WebElement yourSelect = driver.findElement(By.id("CompanyEmployees"));
String text = new Select(yourSelect ).getFirstSelectedOption().getText();