0

こんにちは – 一般的な質問のボットで申し訳ありません... Selenium Web Driver (v2.24.1) を使用して UI テストを自動化していますが、IE9 を除いて夢のように動作します。

addClass および removeClass jQuery メソッドを介して UI コントロールを非表示/表示することにより、クライアント側の機能の一部を実行しています。addClass および removeClass jquery メソッドは、DOM からクラスを追加 (または削除) します。このようにして、アクションをトリガーするためにそれらの変更を探して Selenium DOM 反復を行うことができます...

私たちの問題は、これらの DOM の変更が IE9 に反映されていないことです。たとえば、機能的にはすべて IE で正しく動作していますが、「DOM は静的」であるため、Selenium は一部のパネルが表示されているか非表示になっているかを認識できません...

だから、質問:

1) IE9 で addClass と removeClass を動的に反映する方法はありますか? 2) 別の方法で変更を監視/キャプチャする必要がありますか? (問題を引き起こしているコンポーネントにある種のイベントリスナーを割り当てている可能性がありますか?)

この質問が漠然としすぎていないことを願っています。これは特定のコンポーネントの問題ではありませんが、複数の製品で一般的な方法で Selenium を使用しようとしている方法にあると思います...

4

1 に答える 1

1

私が正しく理解していることを確認させてください:

  • 状態「A」での DOM ロード
  • jQueryはDOMを操作して「B」を状態にします
  • IE9 の Selenium は状態 "B" の DOM を反映せず、まだ "A" のように見えます

上記の場合、セレンと IE9 のバグに遭遇した可能性がありますか?

可能な簡単な回避策は次のとおりです。DOMが状態「B」になった後(または状態「B」に達したかどうかを確認するために)、Seleniumを介してJavaScriptを実行し、結果をSeleniumに返します。

IJavaScriptExecutor js = webDriver as IJavaScriptExecutor;
string hasClass = (string)js.ExecuteScript("$('#ui-control').hasClass('someClass')");
于 2012-07-25T14:50:08.653 に答える