2017-06-19 31 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"