如何使用 Watir 获取带有 "id='foo'" 的标签元素的实例数?

How can I get the number of instances of a tag element with "id='foo'" using Watir?

如何使用 Watir 获取具有 id='foo' 的标签元素的实例数?

我有这个:

b = Watir::Browser.new
b.a(:id => 'foo')

然后如何通过索引获取实例数和访问权限,如下所示:

b.a(:id => 'foo', :index => $i) #Here, $i is a variable in a loop

在伪代码中,我实际上是在尝试这样做:

num = "number of a tags with id foo"
while $i less than num do
    put b.a(:id => 'foo', :index => $i).text into an array
end

除了发现 num.

我知道如何做以上所有事情

如果你想知道有多少匹配,你需要得到一个元素集合(不仅仅是一个元素)。通过复数化元素方法检索集合 - 即 as.

b.as(:id => 'foo')
#=> <Watir::AnchorCollection>

从集合中,您可以使用length(或count)查找实例数:

b.as(:id => 'foo').length

请注意,元素集合是可枚举的。这意味着您不需要使用 while 循环和手动跟踪当前索引和总元素。例如,使用each,你可以简单地写成:

b.as(:id => 'foo').each do |a|
  puts a.text
end

以下代码应该适合您:

arr = Array.new
b.as(:id => 'foo').each { |a| arr.push a}