守夜人:有没有办法找出executeAsync是否执行了javascript?

时间:2016-05-05 07:06:56

标签: javascript selenium nightwatch.js

我使用Nightwatch编写浏览器自动化。我遇到了Nightwatch命令的executeAsync功能问题。

executeAsync 的守夜人文档:

  

将一段JavaScript代码注入页面中以便执行   当前所选帧的上下文。执行的脚本是   假设是异步的,并且评估脚本的结果是   回到了客户端。

     

异步脚本命令可能不会跨越页面加载。如果卸载   在等待脚本结果时触发事件,应该是错误   回到了客户端。

this.demoTest = function (browser) {
   browser.executeAsync(function(data, done) {
     someAsyncOperation(function() {
       done(true);
     });
   }, [imagedata], function(result) {
     // ...
   });
 };

当Async任务完成时,将调用应该是函数的最后一个可选参数。

如何检查Async任务是否已开始执行?我想在浏览器执行异步任务的Javascript主体后立即执行某些操作。有没有办法找出executeAsync是否已经开始在Nightwatch代码中执行?

1 个答案:

答案 0 :(得分:4)

ui.eventDeleteDisplay() 调用保持同步,在执行流程中的行为类似于executeAsync。 要以异步方式执行某些代码,首先需要使用execute编写脚本,然后等待execute的结果。

以下是一个例子:

executeAsync