私はAngularJSアプリケーションをテストするためにセレンを使用しています。私はそれが完全にロードされるまでページ上で何もできないという問題に直面しています。私はThread.sleep()を置くことができますが、これは私が知っているように良い解決策ではありません。ページが読み込まれるまで待つ方法はたくさんありますが(私はGoogleにしました)、私はそれらをすべて試してもまだ運がないと思っています。私のアプリケーションでは、Webページに行くとすべてが視覚的な視点から読み込まれますが、フルページが読み込まれるまで(約1秒)は実行できません。 は、あなたたちは、あなたがそれをやったどのようにあなたの実装を共有することができ、実際にSeleniumとAngularjsが何らかのアクションを行うまで待ちます
に動作しているあなたに
私のコードありがとう:私は似たような状況に直面している
public By ngWait(final By by) {
return new FluentBy() {
@Override
public void beforeFindElement(WebDriver driver) {
driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
((JavascriptExecutor) driver).executeAsyncScript("var callback = arguments[arguments.length - 1];" +
"angular.element(document.body).injector().get('$browser').notifyWhenNoOutstandingRequests(callback);");
super.beforeFindElement(driver);
}
@Override
public List<WebElement> findElements(SearchContext context) {
return by.findElements(context);
}
@Override
public WebElement findElement(SearchContext context) {
return by.findElement(context);
}
@Override
public String toString() {
return "ngWait(" + by.toString() + ")";
}
};
}
何を試しましたか?結果は何ですか? [ask]のヘルプトピックをお読みください。あなた自身の問題を研究し、コードサンプルなどを見つけ、問題を解決するためのコードを書く必要があります。あなたがすべてを行い、まだそれを理解できない場合は、あなたの質問を編集し、あなたが行った研究からメモを追加してください。あなたが試したコードは[mcve]に減らしました。エラーメッセージなど。関連するHTMLを含め、HTMLとコードを適切にフォーマットすることも非常に重要です。 – JeffC
"完全に読み込まれた"状態は、特にコンテンツが動的に作成された場合、主観的です。したがって、ページを完全にロードする要素を定義し、最後に作成した要素または要素の状態を待つ必要があります。 –
@FlorentB。、私は完全にアプリケーションで作業できるように待つ必要があると思うものを追加しました。この要素が完全にロードされるのを待つ方法を知っていますか?私がやろうとしたコードを追加しました.. –