2

Cucumber 生成了一些简洁的 webrat 正则表达式步骤。我在尝试这个时遇到了问题。

在特点:

And I fill in "Telephone (Home)" with "61234567"

在 webrat 步骤中:

When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
  fill_in(field, :with => value) 
end

遇到的错误:

Could not find field: "Telephone (Home)" (Webrat::NotFoundError)

似乎“Home”之间的括号有问题。如何调整正则表达式以考虑括号?

更新:

似乎正则表达式不是问题,因为“字段”实例变量确实产生了“电话(家庭)”。真正的问题是 webrat 的“ fill_in ”方法解析字段变量的方式。

4

3 回答 3

1

如果您只想捕获“电话” ,请尝试以下操作:

/^I fill in "(\w+).*?" with "([^\"]*)"$/

如果它是“家”,你可以试试这个:

/^I fill in "(?:.*?\()?(.+?)\)?" with "([^\"]*)"$/;
于 2009-07-27T05:32:51.310 回答
0

这也让我遇到了“(注销)”字段......

你可以调用 id 字段吗?

fill_in("user_telephone_home", :with => data)
于 2009-07-27T08:46:08.550 回答
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

http://gist.github.com/169215

于 2009-08-17T16:19:12.170 回答