2012-10-12 7 views
9

テーブルセルに一意のIDを割り当てないアプリがあります。列1の一意のテキスト、列2の管理リンク、列3の削除リンクを指定すると、「Foo」というテキストが含まれている同じ行の管理リンクをクリックするようにcapybaraに指示するにはどうすればよいですか?私は.should句で使用する場合​​を使用する方法を見てRails/Capybara:一意のテキストも含むテーブル行のリンクをクリックする方法

Foo manage delete 
Bar manage delete 

。そして、「管理する」というテキストを含むリンクをクリックする方法がわかります。しかし、私はどのように行を見つけるためにそれらを組み合わせて表示されません、その行の中で、リンクをクリックします。

答えて

14

私はこれをテストしてきたし、それが動作するはずです:

find(:xpath, "//tr[td[contains(.,'Foo')]]/td/a", :text => 'manage').click 

これは言う、テキスト「foo」を含む列と行を見つけ、中列のリンクをクリックしてください同じ行に「管理」というテキストが表示されます。

あなたはどこ「foo」で表示されます(つまりはどこかの行にすることができる)気にしない場合は、これを行うことができます:

find(:xpath, "//tr[contains(.,'Foo')]/td/a", :text => 'manage').click 
+0

を。もともと私はxpathとxpathの中の同じ一重引用符形式を使用しましたが、これはうまくいきませんでした。 –

+0

素晴らしいありがとう... – jpwynn

7

もう一つの例:私の答えを更新しました

When(/^I delete the Book with the Title "(.*?)"$/) do |title| 
    find('tr', text: title).click_link("Delete") 
end 
関連する問題