Casper.start 的循环只执行一次
Loop for casper.start only executed once
我得到了以下脚本来循环浏览页面的选项以获取后续值:
var casper = require('casper').create();
casper.on('remote.message', function (message) {
this.echo(message);
});
casper.on( 'page.error', function (msg, trace) {
this.echo( 'Error: ' + msg, 'ERROR' );
});
casper.start(url, function() {
this.evaluate(function() {
// nothing
});
this.then(function() {
ddlArea_options = this.getElementsAttribute('#ddlArea option', 'value');
for(var i = 0; i < ddlArea_options.length; i++) {
if(ddlArea_options[i] != '') {
this.echo(ddlArea_options[i]);
startQuery('myID', ddlArea_options[i]);
}
}
});
});
其中startQuery(id, val)
是一个函数包含casper.start()
:
function startQuery(id, val) {
casper.start(url, function() {
this.echo('startQuery started');
var obj = {};
obj['#' + id] = val;
this.fillSelectors('#form1', obj, true);
this.evaluate(function() {
__doPostBack('ddlArea', '');
});
this.then(function() {
this.echo("doPostback complete");
var values = this.getElementsAttribute('#anotherSelect option', 'value');
for(var i = 0; i < values.length; i++) {
this.echo(values[i]);
}
});
});
casper.run();
}
但startQuery()
只在 for 循环中的最后一项上执行一次。我错过了什么?
每个casper
实例只能有一个start
- run
对。 start
重置之前的所有步骤,因此队列中的所有内容都消失了。在 startQuery
中,您可以将casper.start
更改为casper.thenOpen
并完全删除casper.run
。
相关文章:
- If语句只执行一次
- JavaScript 只在 php 代码中执行一次
- 如果只有一次有条件,如何执行
- 是节点.js一次只执行一个上下文
- 就绪函数上的指令只能执行一次
- 如何在if循环中只执行一次
- Javascript执行一次
- Jquery on('单击')..函数只执行一次
- 如何在一次有条件的ng单击时执行多个调用
- 如何只执行一次ajaxStart和ajaxEnd
- 使用Greasemonkey每5秒执行一次Javascript
- 只执行一次jquery animate
- jQuery如果大于则执行操作,但只执行一次
- 制作一个$window.location.reload(true);在离子/角度中仅执行一次
- 正则表达式回调函数只执行一次
- 如何循环函数数组并在单击时一次执行一个
- 代码只执行一次,但应该继续执行
- Casper.start 的循环只执行一次
- 如何在一次点击(而不是整个点击)内执行一次操作
- 在一次执行中多次运行Jasmine Spec