2016-11-20 30 views
0

用watir試圖創建一個循環來點擊表中包含的所有鏈接。目前表的格式如下:與Watir循環表

<table id="test"> 
    <tbody><tr> 
    <th>Firstname</th> 
    <th>Lastname</th> 
    <th>Link</th> 
    </tr> 
    <tr> 
    <td>Jill</td> 
    <td>Smith</td> 
    <td><a href="http://facebook.com">http://facebook.com</a></td> 
    </tr> 
    <tr> 
    <td>Eve</td> 
    <td>Jackson</td> 
    <td><a href="http://google.com">http://google.com</a></td> 
    </tr> 
</tbody></table> 

而且我現在的嘗試是這樣的:

browser.table(:id => "test").rows do |tr| 
    tr.each do |td| 
    td.links.click 
    end 
end 

上面這段代碼什麼也不做瀏覽器&既不在終端返回的東西(沒有錯誤,沒有輸出) 。

也嘗試了不同的使用方法列:

columns = browser.table(:id => "test").strings.transpose 

browser.columns.each do |t| 
    t.click 
    browser.back 
end 

輸出這個錯誤:#在<main>': undefined method列(NoMethodError)

回答

0

這應該點擊每個:jsfiddle.rb:24表中的鏈接:

my_table = browser.table(:id, 'test') 
table_links = my_table.links.map(&:text) 
table_links.each do |link_text| 
    my_table.link(:text, link_text).click 
    browser.back 
end 

主要是基於官高的回答here

1

較新版本的Watir,version 6.0會自動嘗試重新放置陳舊元素。因此,只要初始頁面在每次重新加載時都不會更改,則在單擊鏈接之前不再需要保存某些參考數據。

它只是變成:

my_table = browser.table(:id, 'test') 
my_table.links.each do |link| 
    link.click 
    browser.back 
end 
+0

好知道,當我切換到新的Watir,賈斯汀。我在制定答案時嘗試過,但它不適用於Watir-Webdriver 0.9.3。 – pjd

+0

也感謝您剛添加的「6.0版本」鏈接。我看到Watir現在已經不在測試版了。我正在等待,我很快就會跳起來。 – pjd