使用casperjs登录网站

Use casperjs to login a website

本文关键字:网站 登录 casperjs 使用      更新时间:2023-09-26

我想使用casperjs登录此网站http://forum.ngocrongonline.com/app/login.php

这是我的test.js文件:

var casper = require('casper').create();
casper.start("http://forum.ngocrongonline.com/app/login.php", function () {
    this.echo(this.getTitle());
    this.echo('Start to login ...');
});
casper.then(function () {
    this.echo("Filling username and password ...");
    this.fillSelectors('form[name="login"]', { 
        'input[name="user"]': '<< my email >>',
        'input[name="pass"]': '<< my password >>',
        'input[name="server"]': '2'
    }, true);
    this.echo('Finish filling username and password!');
});
casper.thenEvaluate(function () {
    document.querySelector('button[type="submit"]').submit();
    this.capture('pic1.png', {
        top: 100,
        left: 100,
        width: 500,
        height: 400
    });
    this.echo('Finish capturing picture');
});

casper.run();

但是,当我尝试运行该脚本时,该脚本似乎没有运行casper.thenEvaluate部分。因此,我无法拍摄图片来查看我是否真的登录了。有人能解释一下如何完成这项任务吗?

casper.evaluate()提供了对PhantomJS和CasperJS中沙盒DOM上下文(页面上下文)的访问。evaluate()内部的this是指全局对象,该全局对象是window而不是casper。您不能访问casper或在页面上下文之外定义的任何其他变量,只能将基元对象传入或传出(Docs:PhantomJS,CasperJS)。

由于您想要执行的操作是同步的,您可以简单地将其移出函数:

casper.thenEvaluate(function () {
    document.querySelector('button[type="submit"]').submit();
});
casper.then(function () {
    this.capture('pic1.png', {
        top: 100,
        left: 100,
        width: 500,
        height: 400
    });
    this.echo('Finish capturing picture');
});