返回与数组匹配的元素

时间:2012-11-05 14:29:36

标签: ruby testing webdriver watir

我是Watir世界的新手,曾在以前的公司使用过webdriver和geb。我想知道Watir是否提供了类似于webdriver的get_elements方法的任何方法。请参阅下面的示例。

想象一下,在更大的页面中存在以下html

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

我希望通过定位给定类的所有元素并迭代它们来对每个div进行一些断言。使用webdriver,我可以这样做:

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

Watir是否提供了等效的结构?我在Watir文档中找不到任何有用的东西。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

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

或者如果你知道他们都是div,你应该这样做:

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

这两种方法都会返回符合条件的元素集合。在第一种情况下,它将匹配任何标记类型,而在第二种情况下,结果将限制为div。

然后,使用上述任何一种方法,您可以以相同的方式迭代:

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

答案 1 :(得分:2)

我建议您使用:css定位器,而不是使用:class定位器,因为它通常更快并且使您的测试更具可读性:

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

此外,请不要忘记:id:name:text和其他人。

相关问题