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)

「ホーム」の間の括弧が問題を引き起こしているようです。括弧を考慮して正規表現を微調整するにはどうすればよいですか?

アップデート:

「フィールド」インスタンス変数が「電話(ホーム)」を生成したため、正規表現は問題ではなかったようです。本当の問題は、webrat の「fill_in」メソッドがフィールド変数を解析する方法でした。

4

3 に答える 3

1

「電話」のみをキャプチャしたい場合は、これを試してください:

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

「ホーム」の場合は、これを試してください:

/^I fill in "(?:.*?\()?(.+?)\)?" with "([^\"]*)"$/;
于 2009-07-27T05:32:51.310 に答える
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 に答える
0

これは、「(ログアウト)」フィールドで私にも遭遇しました...

id フィールドを呼び出すことができますか?

fill_in("user_telephone_home", :with => data)
于 2009-07-27T08:46:08.550 に答える