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