Cucumber产生了一些整洁的webrat正则表达式步骤。我尝试这个时遇到了一个问题。
功能:
And I fill in "Telephone (Home)" with "61234567"
在网络漫步中:
When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
fill_in(field, :with => value)
end
遇到错误:
Could not find field: "Telephone (Home)" (Webrat::NotFoundError)
“Home”之间的括号似乎给出了问题。如何调整正则表达式来计算括号?
更新
似乎正则表达式不是问题,因为“ field ”实例变量确实产生了“Telephone(Home)”。真正的问题是webrat的“ fill_in ”方法解析字段变量的方式。
答案 0 :(得分:1)
如果您只想捕获“电话”,请尝试:
/^I fill in "(\w+).*?" with "([^\"]*)"$/
如果它是“Home”,那你试试这个:
/^I fill in "(?:.*?\()?(.+?)\)?" with "([^\"]*)"$/;
答案 1 :(得分:0)
这也遇到了我的字段“(退出)”......
你可以打电话给id字段吗?
fill_in("user_telephone_home", :with => data)
答案 2 :(得分:0)
我在将标签与webrat中的字段匹配时遇到了类似的问题,我想出了这个代码片段,它松散了用于将标签与字段匹配的正则表达式。也许它会帮助你。
我在features/support/env.rb
module Webrat
module Locators
class FieldLabeledLocator < Locator
def matching_label_elements_with_numbering
label_elements.select do |label_element|
text(label_element) =~ /^.*#{Regexp.escape(@value.to_s)}.*$/i
end
end
alias_method_chain :matching_label_elements, :numbering
end
end
end