【发布时间】:2018-02-07 12:51:17
【问题描述】:
我正在为我的应用程序创建一个测试过程,我希望在我的代码中同步延迟一个操作,以便等待下一页加载,然后搜索我需要的选择器。 我已经使用了 setTimeout 但返回在那里不起作用。
var myelement = "click button here";
if (myelement.indexOf("click")>=0) {
for (var i=1; i<=4 ; i++) {
title = document.querySelector("#element > .row:nth-of-type("+i+") > .title").textContent;
if ( title == "title x" ) {
document.querySelector("#element > .row:nth-of-type("+i+") > .button > a").click();
//wait for 5sec to load next page
var content = document.querySelector("#message").textContent.trim();
if (content == "my content" ) {
return true;
}
}
}
}
如果我不插入延迟,第 9 行(var content)会返回错误TypeError: Cannot read property 'textContent' of null
这里有什么帮助吗? 谢谢
【问题讨论】:
-
如果您尝试同步暂停操作,您的做法是错误的。也就是说,超时不是同步的,它们是异步的。而且你不能从异步回调中返回——这在术语上是矛盾的。查看promises。
标签: javascript automated-tests settimeout delay synchronous