Nightwatch:有没有办法查明executeSync是否执行了javascript
Nightwatch: Is there a way to find out if executeAsync has executed the javascript?
我正在使用Nightwatch编写浏览器自动化。我对守夜命令的executeSync功能有问题。
executeSync:的守夜文档
在页面中注入一段JavaScript,以便在当前选定帧的上下文。执行的脚本是假设是异步的,并且评估脚本的结果是返回给客户端。
异步脚本命令不能跨越页面加载。如果卸载事件在等待脚本结果时被激发,错误应为返回给客户端。
this.demoTest = function (browser) {
browser.executeAsync(function(data, done) {
someAsyncOperation(function() {
done(true);
});
}, [imagedata], function(result) {
// ...
});
};
最后一个可选参数应该是一个函数,它将在异步任务完成时调用。
如何检查异步任务是否已开始执行?我想在浏览器执行异步任务的Javascript主体后立即执行一些操作。有没有办法查明executeSync是否已在Nightwatch代码中开始执行?
executeAsync
调用保持同步,其行为与执行流中的execute
类似。要异步执行某些代码,首先需要用execute
启动脚本,然后用executeAsync
等待结果。
这里有一个例子:
'Demo asynchronous script' : function (client) {
client.timeoutsAsyncScript(10000);
client.url('http://stackoverflow.com/');
// execute a piece of script asynchroniously
client.execute(function(data) {
window._asyncResult = undefined;
setTimeout(function(){
window._asyncResult = "abcde";
}, 2000);
}, ["1234"]);
// execute a task while the asynchroniously script is running
client.assert.title('Stack Overflow');
// wait for the asynchronous script to set a result
client.executeAsync(function(done) {
(function fn(){
if(window._asyncResult !== undefined)
return done(window._asyncResult);
setTimeout(fn, 30);
})();
}, [], function(result) {
// evaluate the result
client.assert.equal(result.value, "abcde");
});
client.end();
}
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以禁用jquery中的单个单选按钮
- 是否可以从父类访问子类的属性
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何让程序检查所选单词中是否有按键
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何使用jquery确定用户是否年满18岁
- Nightwatch:有没有办法查明executeSync是否执行了javascript