如何使用getAllSelectedOptions从多个下拉列表中获取所选项?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (32)
Select dropdown1 = new Select(driver.findElement(By.xpath("//html/body/div/div[2]/div/div/div//div//select")));
List<WebElement> drop1 = dropdown1.getAllSelectedOptions();
for(WebElement temp : drop1) {
      String drop_text = temp.getText();
      System.out.println(drop_text);
}

上面的XPath表示3个下拉字段,当我执行这段代码时,我只在第一个下拉列表中获取选定的文本,需要做哪些更改才能从所有三个下拉字段中获得所选的选项。

 **html code**

<div class="form-group">
        <label class="control-label col-md-4 col-sm-4" for="type-select">Category<span style="color:red">*</span></label>
        <div class="col-md-8 col-sm-8">
            <select defaultattr="4" class="form-control input-style mandatory" data-val="true" data-val-number="The field CategoryID must be a number." id="CategoryID" name="CategoryID"><option value="">--Select--</option>
<option value="1">Architectural Firm</option>
<option value="2">Interior Design Firm</option>
<option value="3">General Contractor</option>
<option selected="selected" value="4">2tec2 Sales Network</option>
<option value="5">Cleaning Company</option>
<option value="6">Commercial end user</option>
</select>

<div class="form-group">
        <label class="control-label col-md-4 col-sm-4" for="type-select">Company Status</label>
        <div class="col-md-8 col-sm-8">
            <select class="form-control input-style" id="ddlCompanyStatus">
                    <option selected="selected" value="1">Active</option>
                    <option value="0">Non Active</option>
            </select>

        </div>
    </div>
<div class="form-group">      
提问于
用户回答回答于

首先,调用findElement()只会从HTML页面返回一个元素。为了获得匹配给定选择器的所有元素,你需要调用findElements()

其次,你似乎有getAllSelectedOptions()将返回为所有<select>字段选择的所有选项的印象。不是这种情况。相反,它只返回单个 <select>字段的所有选定选项。这只有在使用该multiple属性时才有意义。

要获得每个选定的选项<select>,首先需要使用findElements()而不是findElement()。然后你需要遍历选定的元素并在每个元素上调用

getSelectedOption()

用户回答回答于

你可以使用css选择器。option:checked若要获得选定选项,请执行以下操作

List<WebElement> selectedOpts = driver.findElements(
         By.cssSelector("select.form-control > option:checked"));

for(WebElement temp : selectedOpts ) {
      System.out.println(temp.getText());
}

扫码关注云+社区

领取腾讯云代金券