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

For*_*ing 0 ruby ruby-on-rails watir watir-webdriver

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

我有这个:

b = Watir::Browser.new
b.a(:id => 'foo')
Run Code Online (Sandbox Code Playgroud)

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

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

在伪代码中我基本上试图这样做:

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
Run Code Online (Sandbox Code Playgroud)

我知道如何做以上所有事情除了发现num.

Jus*_* Ko 5

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

b.as(:id => 'foo')
#=> <Watir::AnchorCollection>
Run Code Online (Sandbox Code Playgroud)

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

b.as(:id => 'foo').length
Run Code Online (Sandbox Code Playgroud)

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

b.as(:id => 'foo').each do |a|
  puts a.text
end
Run Code Online (Sandbox Code Playgroud)