我试图创建一个提交登录表单的过程,但由于某种原因,我无法读取casper.cli.args在casper.evaluate函数中的值。
var casper = require('casper').create({
verbose: true,
logLevel: 'debug'
});
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
});
casper.on("page.error", function(msg, trace) {
this.echo("Page Error: " + msg, "ERROR");
});
var url = 'https://www.secure.pixiv.net/login.php';
casper.start(url, function() {
console.log("page loaded");
//this.test.assertExists('form#login_form', 'form is found');
casper.evaluate(function() {
document.getElementById("login_pixiv_id").value=(casper.cli.args[0]);
document.getElementById("login_password").value=(casper.cli.args[1]);
document.getElementById("login_submit").click();
});
});发布于 2014-08-19 09:41:42
evaluate函数是沙箱化的。一切都必须明确传递。CasperJS确实将__utils__对象注入页面上下文,但并不是所有东西都可以访问,比如casper.cli属性。
您必须显式传递以下值:
casper.evaluate(function(id, password) {
document.getElementById("login_pixiv_id").value = id;
document.getElementById("login_password").value = password;
document.getElementById("login_submit").click();
}, casper.cli.args[0], casper.cli.args[1]);这是完整的脚本。
https://stackoverflow.com/questions/25380083
复制相似问题