我正在尝试使用CasperJS中的accounts
数组登录我的网站。
casper.start()
.then(function() {
accounts.forEach(function(account) {
casper.thenOpen('http://mywebsite/login', function() {
casper.fill('form.form-type1', account, true);
casper.waitForSelector(".widgetContainer-widget-title", function() {
var elemsCount= this.evaluate(function() {
var elem= $('.widget-personal');
return elem.length;
});
this.echo(surveysCount + ' elemsCount ' + account['username'] + '\n');
});
});
});
});
casper.run(function() {
this.echo('----------- Donenzo, enjoy! ------------\n');
this.exit();
});
现在,代码工作正常,但返回的数字始终为0,因为当widgetContainer-widget-title
完全呈现时,widget-personal
尚未就绪,因此在该时间点找不到任何元素所以返回0,这是因为我的网站是一个Angular应用程序,很遗憾在与数据库通信时有延迟。有没有想过如何等待页面完全呈现以应用测试?
答案 0 :(得分:1)
[ANSWER]
我通过等待.widget-personal
元素本身而不是它的父元素来解决它。这是一个丑陋的解决方法,但它有效,然后我抓住超时引发的错误,如:casper.waitForSelector, timeout and error handling