2016-11-20 1 views
0

テーブルに含まれるすべてのリンクをクリックするためのループを作成しようとしました。現在、表は、この形式があります: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 

このエラー出力する:jsfiddle.rb:24:#(NoMethodError)

答えて

0

ため<main>': undefined methodカラムの中でこれはそれぞれをクリックして動作するはずですテーブルのリンク:

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-Webdriver 0.9.3ではうまく動作しませんでした。 – pjd

+0

ちょうど追加した "バージョン6.0"リンクもありがとう。私はWatirが今ベータから出ているのを見る。私はそれを待っていた、と私はすぐにジャンプを作っているでしょう。 – pjd

関連する問題