我正在尝试读取嵌套在另一个内部的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”)
答案 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
。