从selenium中的下拉值中读取选项文本

时间:2016-07-11 10:24:06

标签: java selenium selenium-webdriver

List<WebElement> statusvalues = driver.findElements(By.id("ddlStatus"));
for (WebElement option : statusvalues)
{
  System.out.println(option.getText());         
}

这是我以前编写的脚本。

系统没有提供错误,但我没有得到结果。我需要在输出中写入五个下拉值。 HTML代码如下所示。

<select id="ddlStatus" name="Status" class="full-width" data-role="dropdownlist" style="display: none;">
    <option value="" selected="selected"> -- Select -- </option>
    <option value="11">Arts</option>
    <option value="13">Science</option>
    <option value="14">Engineering</option>
    <option value="64">Law</option>
    <option value="85">Teaching</option>
    <option value="87">Journalist</option>
</select>

只是探索selenium webdriver以及如何在输出中写下下拉值。

3 个答案:

答案 0 :(得分:1)

List<WebElement> statusvalues = driver.findElements(By.id("ddlStatus"));

  

它是一个元素,而不是元素的集合,所以你需要这样做:

WebElement selectElement = driver.findElement(By.id("ddlStatus"));

在该元素中,您可以选择以进行收集:

List<WebElement> options = selectElement.findElements(By.tagName("option"));
  

现在你可以循环......

尝试:

List<WebElement> statusvalues = driver.findElement(By.id("ddlStatus")).findElements(By.tagName("option"));
for (WebElement option : statusvalues)
{
   System.out.println(option.getText());         
}

答案 1 :(得分:0)

最好的方法是尝试使用Select进行下拉菜单,如下所示: -

Select sel = new Select(driver.findElement(By.id("ddlStatus")));
List<WebElement> options = sel.getOptions();
for (WebElement option : options)
{
  System.out.println(option.getText());         
}

注意: - driver.findElements(By.id("ddlStatus"));仅提供标识为Elements的所有ddlStatus的列表,因此在这种情况下您只能获得在这里下拉元素而不是它的选项

希望它会对你有所帮助.. :)

答案 2 :(得分:0)

你也可以试试这个

   List <WebElement> options = driver.findElements(By.xpath("//*[@id='ddlStatus']/option"));
   for(WebElement option : options)
   {
       System.out.println(option.getText());         
    }

您还可以通过以下3种方式处理下拉列表,

new Select(driver.findElement(By.id(&#34; ddlStatus&#34;))。selectByVisibleText(&#34;特定文字&#34;);

new Select(driver.findElement(By.id(&#34; ddlStatus&#34;))。。selectByIndex(特定索引);

new Select(driver.findElement(By.id(&#34; ddlStatus&#34;))。。selectByValue(&#34;特殊值&#34;);