我尝试制作提交登录表单的程序,但出于某种原因,我无法在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();
});
});
答案 0 :(得分:0)
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]);
This是完整的脚本。