找不到变量:casper

时间:2014-08-19 09:35:10

标签: form-submit casperjs

我尝试制作提交登录表单的程序,但出于某种原因,我无法在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();

    });
});

1 个答案:

答案 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是完整的脚本。