为了澄清,我不想等待一个条件,只需暂停n秒。这是我的代码,但是id没有按照我预期的方式工作,我的怀疑是"等待"是异步的。我希望更改代码,以便打印1,等待5秒,打印2,然后打印3.现在它打印1,打印3,然后等待5秒并打印2。
var casper = require('casper').create();
var x = require('casper').selectXPath;
var fs = require('fs');
var parsedFile = "pfile.txt";
casper.start();
function wait5seconds() {
casper.wait(5000, function() {
this.echo('2');
});
}
casper.then(function() {
this.echo('1');
wait5seconds();
this.echo('3');
});
casper.run();
答案 0 :(得分:5)
您应该将casper.wait()
放在casper.then()
内,如下所示:
casper.start();
casper.then(function(){
echo('1');
});
casper.then(function(){
casper.wait(5000, function(){echo('2')});
});
casper.then(function(){
casper.wait(5000, function(){echo('3')});
});
答案 1 :(得分:3)
不,没有办法在CasperJS中同步等待。您使用的任何wait*
都应该跟随另一个步骤函数(then*
和wait*
函数)。由于casper.echo(s)
是同步的,因此会立即执行。
当然,您可以定义自己的thenEcho
:
casper.thenEcho = function(s){
this.then(function(){
this.echo(s);
});
};
并像这样使用它:
casper.then(function() {
this.thenEcho('1');
wait5seconds();
this.thenEcho('3');
});
答案 2 :(得分:1)
这是我最终使用的,它会阻止代码执行N秒。
casper.then(function() {
this.thenEcho('1');
waitNseconds(5);
this.thenEcho('2');
this.thenEcho('3');
});
然后我称之为:
<i class="fa fa-bar-chart" aria-hidden="true"></i> //same html
打印1,等待5秒,打印2,然后打印3。