【问题标题】:Return elements that match as an array返回匹配为数组的元素
【发布时间】:2012-10-25 09:49:07
【问题描述】:

我是 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 文档中找不到任何有用的东西。

【问题讨论】:

    标签: ruby testing webdriver watir


    【解决方案1】:

    你可以这样做:

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

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

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

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

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

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

    【讨论】:

    • 谢谢。正是我想要的。
    • 贾斯汀,你似乎有错字,应该是 .someClass - 你错过了点。
    • 感谢@JarmoPertman。虽然我认为错字实际上是 :css 应该是 :class.
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 2013-02-19
      • 2016-10-31
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多