jbehave/selenium/webdriver を使用する bdd フレームワークのストーリーの作成に取り組んでおり、ストーリーの実行中にテストでエラーが発生するが、手動で実行すると問題ないように見えるという問題が発生しています。Firefox で手動でテストを実行している場合と、同じシステム/バージョンの Firefox で Selenium Web ドライバーを使用してテストを実行している場合とで、テストしている機能の JavaScript の動作がわずかに異なり、この違いが js エラーを引き起こしているという問題があります。
私はデバッグしましたが、基本的に問題の根本はvar request_XML_container = $('div_appendpoint_id');
、テストを手動で実行している場合とbddフレームワークを介して実行している場合とで異なるものを返すことです。
var request_XML_container = $('div_appendpoint_id');
request_XML_container.innerHTML = encoded_xml_from_request;
var pos = method_to_get_position('id_of_place_div_should_be_appended_to');
// JS exception is thrown saying that style is not defined **ONLY**
// when running through web driver. Running test manually on
// same system and same browser works fine.
request_XML_container.style.left = (pos[0] - 300) + 'px';
request_XML_container.style.top = (pos[1] + 25) + 'px';
request_XML_container.style.display = "block";
手動で実行するvar request_XML_container = $('div_appendpoint_id');
とスタイルが定義されたアイテムを返すのに、webdriver を介して実行すると要素のスタイル属性が定義されないのはなぜですか?
UPDATE :私は当初、これが iframe を更新していると思っていましたが、マークアップを間違って読みました。私が見た iframe は、応答が追加されている要素の親ではなく兄弟です。応答をdivに単純に追加しようとしています。正直なところ、これは id で div を取得するのが非常に簡単であるため、混乱を招くだけであり、この状況で webdriver が別の戻り要素を生成する理由がわかりました。
更新 2 : 再現する手順と、私が使用しているシステムに関する情報:
- webdriver を使用して、次の URL に移動します: http://fiddle.jshell.net/C3VB5/11/show/
- webdriver にボタンをクリックさせます。うまくいかないはずです
- テストを再度実行しますが、一時停止してコードにブレークポイントを置き、ドライバーをクリックします
- webdriver が開いたブラウザの ボタンをクリックします。うまくいかないはずです
- webdriver が開いたブラウザーでブラウザー ページを更新します。これで、動作するはずです。
- システムの詳細:
- OS : OS X 10.8.5 (12F37)
- IDE: Eclipse ケプラー: ビルド ID: 20130614-0229
- ブラウザ (手動および webdriver で使用): Firefox 23.0.1
- セレンのバージョン: 2.35.0
更新 3 : 再現を支援するために、github でこの Maven プロジェクトを提供しました: https://github.com/dkwestbr/WebdriverBug/tree/master/Webdriver
あらすじ/tl:dr; 基本的に、特定の状況では、webdriver が '$()' JavaScript メソッドを、innerHTML またはスタイルが定義された (特に) HTMLElement を返さないメソッドで上書きしているように見えます。この投稿では、問題と再現方法について詳しく説明しています。
問題を追跡するためにこのチケットを開きました: https://code.google.com/p/selenium/issues/detail?id=6287&thanks=6287&ts=1379519170