首页 > 解决方案 > 无法使用 Selenium webdriver 选择多个下拉列表(不是类选择)

问题描述

我在使用 Selenium webdriver 进行测试时遇到问题。我正在使用 Java。无法从不是类 Select 的多个下拉列表中进行选择。这是下拉列表的样子:

下拉图片

这就是代码:

 <div class="form-group ">
       <label for="CurrentCategoriesNomIds-selectized">Categories</label>
      <select placeholder="" multiple="multiple" id="CurrentCategoriesNomIds" name="CurrentCategoriesNomIds" tabindex="-1" class="selectized" style="display: none;">
          <option value="325" selected="selected">Education</option>
      </select>
<div class="selectize-control multi plugin-remove_button">
  <div class="selectize-input items not-full has-options has-items">
    <div class="item" data-value="325">
       Education
       <a href="javascript:void(0)" class="remove" tabindex="-1" title="Remove">×</a>
    </div>
    <input type="text" autocomplete="off" tabindex="" id="CurrentCategoriesNomIds-selectized" style="width: 4px; opacity: 1; position: relative; left: 0px;"></div>
  <div class="selectize-dropdown multi plugin-remove_button" style="display: none; visibility: visible; width: 800px; top: 36px; left: 0px;">
    <div class="selectize-dropdown-content">
      <div class="option" data-selectable="" data-value="324">Agriculture</div>
      <div class="option" data-selectable="" data-value="298">Culture</div>
      <div class="option" data-selectable="" data-value="326">Employment</div>
      <div class="option" data-selectable="" data-value="323">Environment</div>
      <div class="option" data-selectable="" data-value="327">Other</div>
      <div class="option" data-selectable="" data-value="297">Political</div>
      <div class="option" data-selectable="" data-value="322">Transport</div> 
    </div>
</div>
</div>

                        </div>

这是选择 2 个选项时的样子。我想知道是否可以尝试使用 KEYS,但页面不能那样工作。以前没见过那种领域,不知道如何进行?

标签: javaseleniumtesting

解决方案


您可以使用此代码单击下拉菜单:

   public static  void selectOption(WebDriver driver, String optionName) {
        List<WebElement> options = driver.findElements(By.xpath("//div[@class='selectize-dropdoun-content']//div[@class='option']"));
        options.forEach(option -> {
            if (option.getAttribute("innerText").equals(optionName)) {
                Actions actions = new Actions(driver);
                actions.moveToElement(option).click().build().perform();
            }
        });
    }

然后像这样使用:

String option = "Education";
selectOption(driver,option);

希望对你有帮助:)

为我在网站上尝试过的内容添加屏幕截图:https ://semantic-ui.com/modules/dropdown.html 在此处输入图像描述


推荐阅读