角度処理された要素を待つために、すべての角度要求が終了するまで待つことができます。
セレンが予想される条件のExpectedCondition
例で、このようなタスクを実行するためにExplicit Waits
を提供しています。その後
public static ExpectedCondition<Boolean> angularHasFinishedProcessing() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return Boolean.valueOf(((JavascriptExecutor) driver).executeScript("return (window.angular !== undefined) && (angular.element(document).injector() !== undefined) && (angular.element(document).injector().get('$http').pendingRequests.length === 0)").toString());
}
};
}
、私達はちょうどに、すべてのAJAX要求を待つために、私たちのコードを使用することができます完了 ExpectedCondition
を
で実装されている
Explicit Waits
に提供します
WebDriverWait wait = new WebDriverWait(driver, 15, 100);
wait.until(AdditionalConditions. angularHasFinishedProcessing()));
ここで行ったことは、JavascriptExecutor
を使用し、保留中のリクエストを取得するためにjavascriptを実行しました。保留中の要求がない場合、この要素を使用できます。
[anglejsのアプリはセレンで自動化できますか?はい、なぜ我々は分度器を使用する必要がありますか?](http://stackoverflow.com/questions/27380994/can-angularjs-apps-be-automated-with-selenium-if-yes-why-should-we-use-protrac ) –
あなたが書いていることは、世界中のセレンの自動化の専門家(私を含む)が直面している課題です。それはちょうどその方法です - あなたは一人ではありません。 –