Ruby on rails 使用水豚单击特定链接

Ruby on rails 使用水豚单击特定链接,ruby-on-rails,cucumber,capybara,Ruby On Rails,Cucumber,Capybara,我有下面的html.haml页面 %h2 List of available plants %table#plants %thead %tr %th Name %th Description %th Price %th Action %tbody - @plants.each do |plant| %tr %td= plant.name %td= plant.descriptio

我有下面的html.haml页面

%h2 List of available plants

%table#plants
  %thead
    %tr
      %th Name
      %th Description
      %th Price
      %th Action
  %tbody
    - @plants.each do |plant|
      %tr
        %td= plant.name
        %td= plant.description
        %td= plant.price
        %td= link_to "Select", purchase_orders_path(plant: plant, start_date: @start_date, end_date: @end_date), method: :post
我正在执行一个cumber步骤,在该步骤中,我希望根据名称单击植物的链接。我现在有一个步骤实现,它只选择第一个出现的“选择”链接

When(/^I select "(.*?)"$/) do |plant_name|
  click_link('Select', match: :first)
end

如果要先单击“选择”,我想找到一个“tr”,其中“td”plant.name等于我的plant\u name,然后单击该“tr”的“选择”,如果您的植物名称足够独特,您可以这样做

find('tr', text: plant_name).click_link('Select')

这将起作用,因为:text选项匹配tr元素中可见文本的子字符串,然后单击链接的作用域位于找到的tr内。如果您有任何工厂名称是另一个工厂名称的子字符串,或包含在另一个工厂描述中,则可能会失败,etc-但这可以通过明智地选择测试集中的工厂名称/详细信息来进行测试。如果您确实需要使用其他植物名称/详细信息的子字符串进行测试,则可以使用xpath和祖先轴重写初始查找。

如果需要,请单击特定链接,因此您必须将特定的
\id
添加到视图中,然后在水豚中使用“@my\u specific\u id”中的
。。。。结束
但如果需要,只需单击第一个链接使用所有(:link,'My link')。首先。单击()我想找到一个'tr',其中'td'plant.name等于我的plant_name,然后在xpath中单击该'tr'的“选择”使用水豚