【问题标题】:how to get options under a particular optgroup using selenium web driver for java?如何使用 Java 的 selenium Web 驱动程序获取特定 optgroup 下的选项?
【发布时间】:2019-02-22 19:00:37
【问题描述】:

我想从多选选项列表字段中选择特定 optgroup 下的选项,例如

<select id="xyz">
   <optgroup label="Group1">
      <option value="1">pick1</option>
      <option value="2">pick2</option>
   </optgroup>
   <optgroup label="Group2">
       <option value="3">pick3</option>
       <option value="4">pick4</option>
   </optgroup>
</select>

如果选择列表字段如上,我可以使用

new Select(driver.findElement(By.id("xyz"))).selectByVisibleText("pick1");
new Select(driver.findElement(By.id("xyz"))).selectByVisibleText("pick2"); 

用于从上面选择 optgroup -Group1 下的所有选项。

在这里我知道 Group1 中存在的所有选项,因此我可以像上面那样选择。

但我的要求是动态的,我需要选择 optgroup-Group1 下的所有选项。

如果我想动态选择所有选项,包括第 1 组和第 2 组

那我就可以用了

new Select(driver.findElement(By.id("xyz"))).getOptions();

将所有选项作为一个列表获取,我可以将它存储为一个数组,我可以使用数组一个一个地选择所有选项

但是我如何才能获得仅一个特定 optgroup 下的所有选项,例如 Group1 或 Group2?

【问题讨论】:

    标签: java selenium webdriver selenium-webdriver


    【解决方案1】:

    你应该使用 xpathfindElements:

    driver.findElements(By.xpath("xpath = "//select[@id='xyz']/optgroup[@label='Group1']/option")))
    

    【讨论】:

    • 感谢 asgoth,由于我正忙于其他工作,今天只有我可以尝试您的回答,它工作正常。
    • 对我来说,路径还不够(但确实让我想到了正确的方向......谢谢你的指点)。这篇文章中的 xpath stackoverflow.com/q/9670804/2162226 为我工作。这是一个对我有用的完整示例 - 请注意 'option' 之后的附加信息: //select[@id='edit-source']/optgroup[@label='SourceGroup1']/option[@value='4']
    猜你喜欢
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多