【问题标题】:Unable to read text from options in the Select dropdown list无法从“选择”下拉列表中的选项中读取文本
【发布时间】:2014-01-13 17:18:16
【问题描述】:

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

这是我迄今为止尝试过的:

 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>

提前致谢。

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    我使用了您的代码,它工作正常。我可以看到文本正在打印在我的控制台上。您使用的是哪个 webdriver 版本?我在 2.38 版本上检查过。

    【讨论】:

    • 显示的文本来自属性'title'。不是选项的文本。
    • 在删除 'Title' 的 sysout 后尝试。它在我的最后工作正常。我可以看到打印在控制台上的选项。
    • 我可以知道您使用的是哪个版本的硒。我会尝试一下
    • 版本 2.38.0 和 firefox 26.0
    • 你是如何运行测试的?
    【解决方案2】:

    使用以下代码

            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 代码。如果下拉列表不包含选择标签,则无法使用选择类。

    【讨论】:

    • 试过你的代码。仍然没有显示文本。这是具有选择元素的页面的链接:salesforce.com/form/signup/…
    • 你能粘贴html吗?将有助于找出是否必须进行任何更改。还有浏览器和 selenium 版本。
    • Selenium-java-2.39.0 和 Firefox 26.0
    【解决方案3】:

    试试:

    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();
    

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2015-03-13
      • 2017-05-19
      • 2022-12-15
      • 1970-01-01
      • 2021-01-15
      • 2015-11-03
      相关资源
      最近更新 更多