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

Rspec Rails/Capybara:如何单击表行中也包含唯一文本的链接,rspec,capybara,Rspec,Capybara,我有一个应用程序,它不会为表格单元格分配唯一ID。给定第1列中的唯一文本、第2列中的管理链接和第3列中的删除链接,我如何告诉capybara单击包含文本“Foo”的同一行中的管理链接 Foo manage delete Bar manage delete 当与.should子句一起使用时,我了解了如何使用find('tr',text:“Foo”)。我看到了如何单击包含文本“manage”的链接。但我不知道如何组合它们来查找一行,在该行中,单击一个链接。我已经测试过了,它应该可以工作

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

Foo   manage  delete
Bar   manage  delete

当与
.should
子句一起使用时,我了解了如何使用
find('tr',text:“Foo”)
。我看到了如何单击包含文本“manage”的链接。但我不知道如何组合它们来查找一行,在该行中,单击一个链接。

我已经测试过了,它应该可以工作:

find(:xpath, "//tr[td[contains(.,'Foo')]]/td/a", :text => 'manage').click
这意味着,找到包含文本“Foo”的列的行,然后单击同一行中包含文本“manage”的列中的链接

如果您不在乎“Foo”出现在何处(即可能在行中的任何位置),则可以执行以下操作:

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

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

更新了我的答案。最初,我对xpath和xpath中的字符串使用了相同的单引号格式,这是行不通的。