Selenium(WebDriver)を使用してext-jsアプリケーションをテストする場合、ダイアログを表示するボタンがあります。次に、テストはいくつかのフォームフィールドに入力し、ボタンをクリックします。問題は、ダイアログの構築が完全に完了する前に、セレンがこれらのアクションの実行を開始することです。
特定の要素が表示されるのを待つようにセレンに指示できることは知っていますが、「ダイアログの読み込みが完了するのを待つ」というケースを一般化する場合、それを行う方法はありますか?
簡単な答えは、「いいえ、それを行う簡単な方法はありません」です。これがなぜそうなのかを理解するには、次のことを考慮してください。「DOM全体がロードされる」をどのように定義しますか?最後の終了</html>
タグがダウンロードされたときですか?解析されてDOMに追加されたときは?ドキュメントのreadyState
プロパティが「インタラクティブ」、「contentReady」、またはその他の値の場合ですか?JavaScriptを介して追加されたDOM要素はどうですか?そのJavaScriptが経由で起動された場合はどうなりsetTimeout()
ますか?XmlHttpRequestsの処理はどうですか?すべてのユースケースで100%正しいという、その質問に対する万能の答えはありません。
要素を待つことは正しいアプローチです。生成されたIDがあるため、extJを使用する場合、適切な要素を特定するのは難しい場合があります。その特定のJavaScriptフレームワークでクラス属性を使用する方が効果的であることがよくあります。