gpt4 book ai didi

javascript - casper.start 循环仅执行一次

转载 作者:行者123 更新时间:2023-12-03 10:57:07 25 4
gpt4 key购买 nike

我使用以下脚本来循环访问页面的选项以获取后续值:

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 循环的最后一项上执行一次。我错过了什么?

最佳答案

您只能拥有一个 start -run每对 casper实例。 start重置之前的所有步骤,因此队列中的所有内容都消失了。在 startQuery ,您可以更改 casper.startcasper.thenOpen并删除 casper.run完全。

关于javascript - casper.start 循环仅执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28231400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com