2017-06-19 33 views
0

的计数我试图获取一个列表项的计数的网页,并输出这样的:的Watir webdriver的打印列表项

office_lists = browser_driver.li(:class, 'office') 
office_list = browser_driver.li(:class, 'office') 

office_list = Hash.new 0 
office_list.links.each do |link| 
    office_list[link] += 1 
    puts office_list 

但我一直不成功。我希望有人能。说的这些都是我的页面上的所有立

<li class=‘office’></li> 
<li class=‘office’></li> 
<li class=‘office’></li> 
<li class=‘office’></li> 
<li class=‘office’></li> 
<li class=‘office’></li> 

然后,我会希望把这个在某种数组对象,然后拿到计数和输出的项目,像这样的数字:

puts "There are #{count} number of offices in the list" 

任何帮助将不胜感激。 我也需要什么,如“pp”或“p”或其他任何东西或将watir足够这项任务?

回答

0

您可以使用内置的lis方法代替滚动您自己的方法,该方法返回一组li元素的集合。

下面是一个例子的收集li元素与“办公室”一类的属性,然后链Array::count返回集合中元素的个数:

HTML(在名为foo.rb本地文件):

<li class='office'></li> 
<li class='office'></li> 
<li class='office'></li> 
<li class='office'></li> 
<li class='office'></li> 
<li class='office'></li> 

的Watir片段:

require 'watir' 

b = Watir::Browser.new :chrome 
b.goto "file:///C:/foo.html" 
count = b.lis(class: 'office').count 
puts count 
#=> 6 
puts "There are #{count} number of offices in the list" 
#=> There are 6 number of offices in the list 
0

要覆盖你已经宣布第一

举一个例子,

office_lists = browser_driver.li(:class, 'office') 
office_list = browser_driver.li(:class, 'office') 

office_list = Hash.new 0 

您是通过哈希更换office_list所以你browser_driver.li(:class, 'office')将不再office_list可用。

而且我不明白你是要计算某个列表下的链接还是要计算列表总数。

如果要算在特定列表的链接,然后写下面的代码

p browser.li(:class, 'office').links.count 

上面一行将打印在该列表的链接数

如果你想数总数然后写下面的代码

count= browser.lis(:class, 'office').count #its `lis` not `li` 
puts "There are #{count} number of offices in the list"