ウェブページが完全に読み込まれるまで待機するスクリプトを作成したいのですが、javascript式 "window.document.readyState"を使用しています。ページが完全に読み込まれている場合は「完了」を返します。browser.executeScript(return window.document.readyState)が分度器で解決されない
function waitForWebpageLoadingCompletely(callback) {
try {
var status="Incomplete";
do {
var flag = browser.executeScript("return window.document.readyState ;");
//console.log(flag)
flag.then(function (state) {
console.log(state);
if(state==="complete")
callback();
else {
//status = "Incomplete";
console.log(state);
}
},function (err) {
console.log(err)
})
}while(!(status ==="complete"));
} catch (e) {
expect(false);
console.log(e);
callback();
}
}
しかしexecuteScriptは、任意の成功またはエラーに解決されていません。実行はこの行で停止します。そして、いくつかの時間後にはEROR下に示します: FATAL ERROR:CALL_AND_RETRY_LASTの割り当てが失敗しました -
これは、同期ループ内で非同期メソッド( 'executeScript')を呼び出すためです。 –
@Florent B、これにはどんな解決策がありますか?ありがとう。 –
[browser.wait](http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.wait)をご覧ください。ドライバがデフォルトで既にこの状態を待っているので、 'complete'状態を待つことは役に立たないことに注意してください。 –