2013-01-05 33 views
1

我想從一個多選列表字段選擇下特別OPTGROUP選項,例如如何使用selenium web driver for java在特定的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說組1或組2?

回答

5

您應該使用的XPathfindElements

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

謝謝asgoth,當我正忙着與其他一些工作,今天只有我可以試着與你的答案其工作的罰款。 –

+0

對我來說,那裏的路還不夠(但是讓我思考了正確的方向......感謝你的指針)。在這篇文章中的xpath http://stackoverflow.com/q/9670804/2162226爲我工作。這裏有一個完整的例子,爲我工作 - 注意'選項'後的額外信息://選擇[@ id ='edit-source']/optgroup [@ label ='SourceGroup1']/option [@ value ='4'] – gnB

相關問題