私のプロジェクトは、宝石を更新する前は正常に機能していましたが、一部の xpath でこのエラーが発生し始めます
3 に答える
「update gems」で、Capybara を 2.0 にアップグレードしたと思います。これには、Jonas Nicklas による発表で概説されているように、より具体的な一致が必要です。
click_link
やなどのメソッドを介して要素を見つけて対話するfill_in
場合、一致する要素が複数ある場合、以前は Capybara がどの要素を意味するかを推測しようとしていました。今後、Capybara は代わりに例外を発生させます。たとえば、「パスワード」と「パスワード確認」という名前の 2 つのフィールドがある場合fill_in "Password", :with => "test"
、例外が発生します。
簡単な解決策は、テキスト ラベルの代わりに CSS クラス/ID またはより具体的な XPath を使用して、セレクターをより具体的にすることです。
//html/body/div/div/div[3]/div[2]/div/div/div/a[2] は、通常、firebug を使用して得られる非常に貧弱な xpath です。これは合計 10 個のスラッシュであり、非常にもろいものです。開発者が ID を省略している (そして css クラスをランダムに使用している) 場合があるのは事実ですが、その場合は、ID を入れるよう依頼することをお勧めします。
これにより、次の場所に移動できます
//html/body/div/div/div[3]/div[2]/div/div/div/a[2]
に
//a[@id='id_2']
はるかに簡単ですが、開発者との緊密なチーム作業が必要です
私のアドバイスは、次の記事を読むことです: http://www.w3schools.com/xpath/xpath_syntax.asp
例: 与えられた属性
Cucumber/capybara はラベルを使用するので、ラベルの 1 つのカスタム名を次のように変更します。
<%= f.label :password_confirmation, "確認" %>
<%= f.password_field :password_confirmation %>