从div中读取只与Watir有多个类匹配的文本

时间:2013-08-14 18:10:36

标签: ruby testing automation watir

我正在尝试读取嵌套在另一个内部的div的文本。这些div中的每一个都只有类作为标识符。我试图使用div的索引,但根本不工作。我的HTML看起来像这样

<div class="zoneA">
 <div class="zone2A">
  <div class="zone3A">
   <div class="zone3ALeft">
     Text1
   </div
   <div class="zone3ARight">
     Text2
   </div>
  </div>
 </div>
</div>
<div class="zoneA">
 <div class="zone2A">
  <div class="zone3A">
   <div class="zone3ALeft">
     Text3
   </div
   <div class="zone3ARight">
     Text4
   </div>
  </div>
 </div>
</div>

我想用div =“zone3ARight”或Text2和Text4读取div的文本。

我不是百分之百确定与这么多同名的班级有关。我正在尝试这样的事情。

puts browser.div(:class, "zone3ARight", :index, 0).text
puts browser.div(:class, "zone3ARight", :index, 1).text

但是get argumentError:期望Hash或(:how,“what”)

1 个答案:

答案 0 :(得分:4)

如果要使用多个属性查找元素,则必须将它们作为哈希提供。哈希看起来像:

:key1 => "value1", :key2=> "value2"

请注意,密钥(即Watir应如何定位元素)和值(即Watir应查找的内容)由=>而不是,分隔。

您的代码应为:

puts browser.div(:class => "zone3ARight", :index => 0).text
#=> "Text2"
puts browser.div(:class => "zone3ARight", :index => 1).text
#=> "Text4"

请注意,您还可以创建所有匹配div元素的集合,然后遍历每个元素。如果你想在不知道有多少div的情况下浏览所有匹配的div,这很有用。

browser.divs(:class => "zone3ARight").each do |div|
    puts div.text
end

请注意,divs代替div