-4

私のプロジェクトは、宝石を更新する前は正常に機能していましたが、一部の xpath でこのエラーが発生し始めます

4

3 に答える 3

6

「update gems」で、Capybara を 2.0 にアップグレードしたと思います。これには、Jonas Nicklas による発表で概説されているように、より具体的な一致が必要です。

click_linkやなどのメソッドを介して要素を見つけて対話するfill_in場合、一致する要素が複数ある場合、以前は Capybara がどの要素を意味するかを推測しようとしていました。今後、Capybara は代わりに例外を発生させます。たとえば、「パスワード」と「パスワード確認」という名前の 2 つのフィールドがある場合fill_in "Password", :with => "test"、例外が発生します。

簡単な解決策は、テキスト ラベルの代わりに CSS クラス/ID またはより具体的な XPath を使用して、セレクターをより具体的にすることです。

于 2012-11-22T02:12:31.190 に答える
1

//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

于 2012-11-22T02:37:32.450 に答える
0

例: 与えられた属性

Cucumber/capybara はラベルを使用するので、ラベルの 1 つのカスタム名を次のように変更します。


<%= f.label :password_confirmation, "確認" %>
<%= f.password_field :password_confirmation %>

于 2013-01-01T14:23:36.193 に答える