代码之家  ›  专栏  ›  技术社区  ›  Bhuvana

如何使用GetAllSelectedOptions从多个下拉列表中获取选定选项

  •  0
  • Bhuvana  · 技术社区  · 6 年前
    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">      
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   yong    6 年前

    您可以使用css选择器 option:checked 获取选定选项

    List<WebElement> selectedOpts = driver.findElements(
             By.cssSelector("select.form-control > option:checked"));
    
    for(WebElement temp : selectedOpts ) {
          System.out.println(temp.getText());
    }
    
        2
  •  1
  •   Code-Apprentice    6 年前

    首先,打电话 findElement() 只返回HTML页中的单个元素。为了获得与给定选择器匹配的所有元素,需要调用 findElements() 相反。

    其次,你的印象是 getAllSelectedOptions() 将返回所有选定的选项 <select> 领域。事实并非如此。相反,它只返回 单一的 <选择& 字段。只有当你使用 multiple 属性。

    在每个 <选择& ,首先需要使用 FindElements() 而不是 查找删除() . 然后需要遍历选定的元素并调用 getSelectedOption() 在每一个。