如何无限期等待页面加载到javascript测试用例中

时间:2019-02-08 10:22:52

标签: javascript selenium monitoring newrelic

我有一个JavaScript性能监控合成脚本。我想知道是否可以应用一条语句来等待页面加载,因为它具有大量的重定向并且需要时间。

当前正在使用...

$browser.sleep(80000);

我想用无限等到页面加载替换它。

2 个答案:

答案 0 :(得分:3)

是的,您可以无限期地检查/等待,直到借助JavaScript的window.onload加载页面为止。

尝试下面的代码,该代码每2秒检查一次,并等待页面加载完毕。页面加载后,循环将中断,否则将无限期运行:

var status = false;
window.sleep = function() { 
    return setTimeout(() => {
        console.log("=> Waited for 2 seconds...");
    }, 2000);
}
var getStatus = function() {
    for(var i = 0;; i++) {
        if(window.onload = function() {
            return true;
            }) {
            status = true;
            console.log(i+"). Loaded ? "+status);
            break;
        } else {
            console.log(i+"). Loaded ? "+status);
            sleep();
        }
    }
    return status;
}
getStatus();

getStatus()将在页面成功加载后返回true,否则在页面加载之前不会返回任何内容。

答案 1 :(得分:1)

您可以为此使用clearTimeout()。

function timeOutFunction() {
  myTimeOut = setTimeout(function()
    { 
     $browser.sleep() }, 80000);
    }

function stopTimeOutFunction() 
    {
      clearTimeout(myTimeOut);
    }

stopTimeOutFunction将覆盖timeOutFunction函数的功能,从而防止超时。