带硒的select2下拉菜单

克里斯

我在 WordPress 产品页面中有一个启用了 select2 ajax 的下拉菜单。

我已经设法使用 selenium 在下拉列表中显示选项。

但我无法从列表中选择其中一个选项。

我可以使用以下代码获取元素。但是该元素不能转换为 Select 也不能​​单击。

driver.findElement(By.cssSelector("[class='multiselect attribute_values wc-enhanced-select select2-hidden-accessible enhanced']"))

任何想法如何从中选择任何选项?

下拉菜单的 HTML 代码是

<tr>
  <td class="attribute_name">
    <label>Name:</label>
    <strong>Brand</strong>
    <input type="hidden" name="attribute_names[0]" value="pa_brand">
    <input type="hidden" name="attribute_position[0]" class="attribute_position" value="0">
  </td>
  <td rowspan="3">
    <label>Value(s):</label>
    <select multiple="" data-placeholder="Select terms" class="multiselect attribute_values wc-enhanced-select select2-hidden-accessible enhanced" name="attribute_values[0][]" tabindex="-1" aria-hidden="true">
      <option value="107">Adidas</option>
      <option value="110">Gul Ahmed</option>
      <option value="111">Khadi</option>
    </select>
    <span class="select2 select2-container select2-container--default select2-container--above select2-container--open" dir="ltr" style="width: auto;">
         <span class="selection">
            <span class="select2-selection select2-selection--multiple" aria-haspopup="true" aria-expanded="true" tabindex="-1" aria-owns="select2-attribute_values0-to-results" aria-activedescendant="select2-attribute_values0-to-result-d16b-111">
               <ul class="select2-selection__rendered" aria-live="polite" aria-relevant="additions removals" aria-atomic="true">
                  <li class="select2-search select2-search--inline"><input class="select2-search__field" type="text" tabindex="0" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" placeholder="Select terms" style="width: 418.797px;" aria-owns="select2-attribute_values0-to-results" aria-activedescendant="select2-attribute_values0-to-result-d16b-111"></li>
               </ul>
            </span>
    </span>
    <span class="dropdown-wrapper" aria-hidden="true"></span>
    </span>
    <button class="button plus select_all_attributes">Select all</button>
    <button class="button minus select_no_attributes">Select none</button>
    <button class="button fr plus add_new_attribute">Add new</button>
  </td>
</tr>

未检测到的硒

根据 HTML:

<select multiple="" data-placeholder="Select terms" class="multiselect attribute_values wc-enhanced-select select2-hidden-accessible enhanced" name="attribute_values[0][]" tabindex="-1" aria-hidden="true">

WebElement 显然是一个<select>节点,要从标记中选择一个选项,您需要elementToBeClickable()引入WebDriverWait,您可以使用以下任一定位器策略

  • 使用cssSelectorselectByVisibleText()

    new Select(new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.cssSelector("select.multiselect.attribute_values.wc-enhanced-select.select2-hidden-accessible.enhanced[data-placeholder='Select terms']")))).selectByVisibleText("Adidas");
    
  • 使用xpathselectByValue()

    new Select(new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//select[@class='multiselect attribute_values wc-enhanced-select select2-hidden-accessible enhanced' and @data-placeholder='Select terms']")))).selectByValue("110");
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章