单击使用capybara的特定链接

时间:2016-01-10 17:01:32

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

我正在实施黄瓜步骤,我想根据名称点击工厂的链接。我现在所拥有的是这个步骤实现,它只选择第一次出现的“选择”链接。

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

而是先点击'选择',我想找到一个'tr',其中'td'plant.name等于我的plant_name,然后点击'tr'的<选择'

1 个答案:

答案 0 :(得分:2)

如果您的工厂名称足够独特,您可以

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

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