Rails/Capybara:如何单击包含唯一文本的表行中的链接

jpw*_*ynn 10 rspec capybara

我有一个不为表格单元格分配唯一ID的应用程序.给定第1列中的唯一文本,第2列中的管理链接和第3列中的删除链接,如何告诉capybara单击包含文本"Foo"的同一行中的管理链接?

Foo   manage  delete
Bar   manage  delete
Run Code Online (Sandbox Code Playgroud)

我看到find('tr', text: "Foo").should子句一起使用时的使用方法.我看到如何点击包含文本'manage'的链接.但是我没有看到如何将它们组合成一行,并在该行中单击一个链接.

Chr*_*erg 14

我测试了这个,它应该工作:

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

这就是说,找到包含文本'Foo'的列的行,然后单击同一行中带有文本'manage'的列中的链接.

如果您不关心'Foo'出现在哪里(即可能在行中的任何位置),那么您可以这样做:

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


Dav*_*vid 9

另一个例子:

When(/^I delete the Book with the Title "(.*?)"$/) do |title|
  find('tr', text: title).click_link("Delete")
end
Run Code Online (Sandbox Code Playgroud)