ブラウザオートメーション-JavaScriptをページに追加し、タスクの完了を待ちます
-
25-10-2019 - |
質問
自動化が必要な醜いデータ入力タスクがあります。問題は、一部のプロセスがAPIのないWebベースのAjaxサービスに依存していることです。
ImaCros(またはその他の自動化ツール)の問題は、マクロがJavaScriptをページに注入するたびに(AJAXコールバックを変更し、必要なすべてを実行する)、子スクリプトには、タスクの準備ができていることを親スクリプトに通知する方法がないことです。 、そして、1つのスレッドでプロセスを継続させます。待機命令を使用すると、信頼性はゼロになり、フェイルセーフを実装する方法はありません。
Chrome Extensions、XSSブラウザーのセキュリティの低下、Curl&PHPを介したリクエストの複製など、考えられるものは何でも試しました。これらのそれぞれには独自の制限があります。
私はあらゆる解決策を受け入れています:
- ページが読み込みが終了するのを待つことができます(オンロードイベント)
- その特定のページでJavaScriptを変更したり、VARと対話したりできます。
- サブタスクが完了し、適切なイベントを起動していることを親の発信者に通知することができます
- フラッシュをサポートします
代替手段と支援が非常に高くなります。
解決
これは、Ajaxリクエストが終了するのを待つためのさまざまな方法を説明するセレン中心の良い記事です。 http://agilesoftwaretesting.com/?p=111.
これは、既存のJSを変更しようとするよりもはるかにクリーンです。以下のいずれかをJavaScriptから直接呼び出すことができます。そのため、自動化フレームワークがJavaScript(Selenium/WebDriverが行う)の呼び出しをサポートしている限り、Webサイトが使用しているAjaxライブラリに応じて、これらの機能を呼び出すだけです。
jQuery:「jquery.active」
プロトタイプ:「ajax.activerequestcount」
Dojo:「Dojo.io.xmlhttptransport.inflight.length」
値が0であることを確認してから続行するだけです。