0

Ruby on Rails アプリに Turbolinks gem をインストールせずにセレン テストを実行すると、テストはパスします。ターボリンクを含めると、テストは失敗します。たとえば、テストが開始された場合

開く /
clickAndWait link=Sign in
type id=session_email any@example.com

次に、
「[error]Element id=session_email not found.

ページのソースを見ると、ターボリンクがインストールされた状態で session_email id がまだ残っています。このページhttp://www.digitalkingdom.org/rlp/tiki-index.php?page=Selenium+And+Javascriptを見つけました。これは、ページが完全に読み込まれたことを検出する際に問題がある可能性があることを示しているようです。

私のテストスイートで何百行も変更せずにこれを修正する方法はありますか? そうでない場合、ターボリンクされたページが完全に読み込まれたことをテストできる信頼できるセレンの方法はありますか?

4

1 に答える 1

1

github turbolinks-compatability projectの助けを借りて、この質問に対する部分的な回答を提供することができました。

Turbolinks gem が使用されている場合は、ページが実際に読み込まれることを確認するために、Selenium テスト ケースを変更する必要があります。たとえば、テストに次のコードが含まれているとします。

Open /
clickAndWait link=Sign in
type id=session_email any@example.com

次に、次のように変更する必要があります

Open /
click link=Sign in
waitForElementPresent id=session_email
type id=session_email any@example.com

次にテストするページの機能に応じて、使用できる「waitFor」修飾子がいくつかあります。

ただし、テストに JavaScript ポップアップが含まれる場合は、waitFor コマンドを追加しないでください。たとえば、次のようなテストがある場合

clickAndWait link=Delete
assertConfirmation   Are you Sure?

コードを変更しないでください。実際、waitFor テストを追加すると、javascript ポップアップの場合に実行がハングします。

このソリューションには、コードの行ごとの手動変更が含まれます。この問題を処理するためのより良い方法があるかどうかを確認するために、Selenium ユーザー グループでイシューを公開しました。

于 2013-03-28T00:58:35.890 に答える