0

セレン テストが PHPUnit_Extensions_Selenium2TestCase_NoSeleniumException 例外で失敗します。しかし、常にではなく、常に同じ要素上にあるとは限りません。

これは実行速度に関係していると思われます。つまり、セレクターが実行されたときに要素がまだ表示されていません。

私はSOを検索しましたが、ほとんどの場合、WebdriverWaitを含むJava関連の提案を見つけるか(私が見つける限りPHPUnit/Seleniumにはありません)、またはwaitForPageLoadなどの古いSelenium RCコマンドを処理します.

これらのテストをより安定させるにはどうすればよいですか? 反復の間に sleep() を使用して、要素を選択するために (一定量の反復の間) 繰り返し試行する関数で要素の選択をラップする必要がありますか? これの一般的な/ベストプラクティスは何ですか?

4

1 に答える 1

0

私は問題を見つけたと思います。セレンが要素を見つけるにはもっと時間が必要だという私の最初の考えは間違っているようです。Selenium サーバーは、「実行中: [要素の検索:...」を実行するのに時間を費やしますが、すぐに「実行中: [セッションの削除:...」を実行します。

これで、sleep() などのものがテストに役立たなかった理由が説明されました。

さらにグーグルで検索すると、このGoogle グループのディスカッションが見つかりました。そのため、現在の Selenium Server 2.26.0 は FF 17.0 ではうまく動作しないようです。ChromeDriver をインストールし、Chrome でテストを繰り返し実行して確認しましたが、毎回成功しました。

だから今、私は次のいずれかを行うことができます:

  1. 最先端の Selenium の最新ソースを試してコンパイルし、FF17 で動作するかどうかを確認します
  2. FF を 16.0 以下にダウングレードする
  3. 2.27.0 がリリースされるまで、Chrome (および IE、Opera など) をテストに使用します

ダウングレードしたくないので、今のところオプション 3 を使用して、Chrome に対してテストを実行します。とにかく、これは私にとって機能テストの初期セットアップにすぎないため、テストを複数のブラウザーに拡張することは後で行うことができます。

編集: Selenium 2.27.0でFireFoxを再び使用するようになりました

于 2012-11-29T09:35:03.580 に答える