我有一个不为表格单元格指定唯一ID的应用程序。给定第1列中的唯一文本,第2列中的管理链接和第3列中的删除链接,如何告诉capybara单击包含文本'Foo'的同一行中的管理链接?
Foo manage delete
Bar manage delete
我看到与find('tr', text: "Foo")
子句一起使用时如何使用.should
。我看到如何点击包含文本'manage'的链接。但是我没有看到如何将它们组合成一行,并在该行中单击一个链接。
答案 0 :(得分:14)
我已经测试了它,它应该可以工作:
find(:xpath, "//tr[td[contains(.,'Foo')]]/td/a", :text => 'manage').click
这就是说,找到包含文本'Foo'的列的行,然后点击同一行中带有文本'manage'的列中的链接。
如果您不关心“Foo”出现在哪里(即可能在行中的任何位置),那么您可以这样做:
find(:xpath, "//tr[contains(.,'Foo')]/td/a", :text => 'manage').click
答案 1 :(得分:8)
另一个例子:
When(/^I delete the Book with the Title "(.*?)"$/) do |title|
find('tr', text: title).click_link("Delete")
end