1

我正在尝试阅读嵌套在另一个 div 中的文本。这些 div 中的每一个都只有 class 作为标识符。我试图使用 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>

我想用 class="zone3ARight" 或 Text2 和 Text4 从 div 中读取文本。

我只是不能 100% 确定要处理这么多同名的课程。我正在尝试这样的事情。

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

但是得到 argumentError: expected Hash or (:how, "what")

4

1 回答 1

4

当您想使用多个属性定位一个元素时,它们必须作为散列提供。哈希看起来像:

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

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

您的代码应该是:

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

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

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

请注意,divs使用 代替div

于 2013-08-14T19:24:25.543 回答