使用水豚点击特定的 link

click the specific link using 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.description
        %td= plant.price
        %td= link_to "Select", purchase_orders_path(plant: plant, start_date: @start_date, end_date: @end_date), method: :post

我正在执行黄瓜步骤,我想根据名称单击植物的 link。我现在拥有的是这一步实现,它只选择 'Select' link.

的第一次出现
When(/^I select "(.*?)"$/) do |plant_name|
  click_link('Select', match: :first)
end

而不是先单击 'Select',我想找到一个 'tr',其中 'td' plant.name 等于我的 plant_name,然后单击 "Select" 'tr'

如果你的植物名称足够独特,你可以做到

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

这会起作用,因为 :text 选项匹配 tr 元素中可见文本的子字符串,然后 click_link 被限定在找到的 tr 中。如果您有任何植物名称是另一个植物名称的子字符串,或者包含在另一个植物描述中等,它可能会失败 - 但可以通过在测试集中明智地选择植物 names/details 来处理测试。如果您确实需要使用作为其他植物子字符串的植物名称进行测试 names/details,可以使用 xpath 和祖先轴重写初始查找。