如何使用selenium web driver for java获取特定optgroup下的选项?

Mut*_*mar 1 java selenium webdriver selenium-webdriver

例如,我想从多选选项列表字段中选择特定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>
Run Code Online (Sandbox Code Playgroud)

如果选项列表字段如上所述,我可以使用

new Select(driver.findElement(By.id("xyz"))).selectByVisibleText("pick1");
new Select(driver.findElement(By.id("xyz"))).selectByVisibleText("pick2"); 
Run Code Online (Sandbox Code Playgroud)

从上面选择optgroup -Group1下的所有选项.

在这里,我知道Group1中存在哪些选项,因此我可以选择如上所述.

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

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

然后我就可以用了

new Select(driver.findElement(By.id("xyz"))).getOptions();
Run Code Online (Sandbox Code Playgroud)

将所有选项作为List获取,我可以将其存储为数组,然后我可以使用数组逐个选择所有选项

但是,我怎样才能在一个特定的optgroup下获得所有选项,比如Group1或Group2?

asg*_*oth 7

你应该使用xpathfindElements:

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