Ruby、Cucumber 和 Capybara:使用正则表达式进行选择
Ruby, Cucumber, & Capybara: selecting using regex
我正在尝试 select 使用 Capybara 的输入节点:
When /^the shopper clicks the "(.+)" button$/ do |button|
first(:css, text: /^#{button}/).click
end
触发上述步骤的场景是:
And the shopper clicks the "PAY" button
视图中的按钮始终以文本 'PAY' 开头,但后面跟着 space,然后是产品的总价,例如'PAY 0
'
美元金额会改变,但 PAY 部分不会。如果我尝试上面的代码,我会收到以下错误:
And the shopper clicks the "PAY" button # features/step_definitions/shared_steps.rb:33
unexpected '$' after '' (Nokogiri::CSS::SyntaxError)
如何使用 Capybara 和 Regex 正确地获取 PAY 按钮?
您遇到的问题是您指定了 css
选择器类型但实际上没有指定 CSS 选择器。因为它是一个 <input>
元素,你可以做
find(:css, 'input', text: /^#{button}/).click
但是,由于它是用作按钮的输入,我假设它是提交、重置、图像或按钮类型。这意味着您可以使用 :button 选择器类型(而不是 :css)来更清楚地了解您实际在做什么。当找到一个按钮时,水豚的默认行为是匹配子字符串,所以你应该能够做到
click_button(button)
与
中的任何一个相同
find(:button, button).click
find_button(button).click
如果这对您不起作用,请将相关的 HTML 添加到您的问题中。
顺便说一句,您应该尽可能远离 first
- 它有很多缺点。
我正在尝试 select 使用 Capybara 的输入节点:
When /^the shopper clicks the "(.+)" button$/ do |button|
first(:css, text: /^#{button}/).click
end
触发上述步骤的场景是:
And the shopper clicks the "PAY" button
视图中的按钮始终以文本 'PAY' 开头,但后面跟着 space,然后是产品的总价,例如'PAY 0
'
美元金额会改变,但 PAY 部分不会。如果我尝试上面的代码,我会收到以下错误:
And the shopper clicks the "PAY" button # features/step_definitions/shared_steps.rb:33
unexpected '$' after '' (Nokogiri::CSS::SyntaxError)
如何使用 Capybara 和 Regex 正确地获取 PAY 按钮?
您遇到的问题是您指定了 css
选择器类型但实际上没有指定 CSS 选择器。因为它是一个 <input>
元素,你可以做
find(:css, 'input', text: /^#{button}/).click
但是,由于它是用作按钮的输入,我假设它是提交、重置、图像或按钮类型。这意味着您可以使用 :button 选择器类型(而不是 :css)来更清楚地了解您实际在做什么。当找到一个按钮时,水豚的默认行为是匹配子字符串,所以你应该能够做到
click_button(button)
与
中的任何一个相同find(:button, button).click
find_button(button).click
如果这对您不起作用,请将相关的 HTML 添加到您的问题中。
顺便说一句,您应该尽可能远离 first
- 它有很多缺点。