2012-11-05 66 views
1

我是Watir世界的新手,在以前的公司中使用過webdriver和geb。我想知道Watir是否提供了類似於webdriver的get_elements方法的方法。見下面的例子。返回與數組相匹配的元素

想象一下,一個更大的頁面

<div class="someClass">someText</div> 
<div class="someClass">someMoreText</div> 
<div class="someClass">evenMoreText</div> 

我想通過定位給定類的所有元素,並通過他們迭代使針鋒相對的div的一些說法中以下HTML存在。使用webdriver,我可以這樣做:

elements = driver.get_elements(:css, ".someClass") 
elements.each do |element| 
    //some assert on element 
end 

Watir是否提供了一個等效的構造?在Watir文檔中我找不到任何有用的東西。

回答

2

你可以這樣做:

elements = driver.elements(:css => '.someClass') 

或者,如果你知道他們是所有div,你應該做的:

elements = driver.divs(:css => '.someClass') 

這兩種方法都將返回符合條件的元素的集合。在第一種情況下,它將匹配任何標籤類型,其中作爲第二種情況,結果將限於div。

然後,用兩種以上的,可以重複同樣的方式:

elements.each do |element| 
    //some assert on element 
end 
+0

謝謝。正是我在找什麼。 – CBA

+0

賈斯汀,你似乎有錯別字,它應該是.someClass - 你錯過了點。 –

+0

謝謝@JarmoPertman。雖然我認爲錯字實際上是這樣的:CSS應該是:class。 –

2

而不是使用:css定位器我建議你使用:class定位器代替,因爲它通常是更快,讓你的測試更具可讀性:

elements = driver.divs(:class => 'someClass') 

另外,不要忘記:id:name:text等。

相關問題