3

我想从多选选项列表字段中选择特定 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?

4

1 回答 1

11

您应该使用xpathfindElements

driver.findElements(By.xpath("xpath = "//select[@id='xyz']/optgroup[@label='Group1']/option")))
于 2013-01-05T11:03:06.767 回答