CasperJS - Form fill()返回401

时间:2014-04-21 13:36:57

标签: casperjs

我正在尝试测试具有基本身份验证功能的网页。

这是我到目前为止所做的:

var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug'
});

casper.options.viewportSize = {width: 1366, height: 667};

casper.start();

casper.open( 'http://internal/page.php', {
    method: 'get',
    headers: {
        'Authorization': 'Basic '+btoa('username:password')
    }
}).then(function(response) {
    this.fill('form[action="page2.php"]', {
        cattype: 'BLAH2',
        needdate: '04/21/2014'
    }, true);
});
casper.then(function() {
    this.capture('screenshot-form-entry.png');
});
casper.run(function() {
    this.exit();
});

页面打开正确(无身份验证问题)。

表单字段设置正确。

问题在于表单提交。

它表示状态=失败

我查看服务器日志,它给出了401。

为什么凭据未传递给表单提交? 或者问题应该是,我如何获得凭证?

1 个答案:

答案 0 :(得分:1)

经过几天的挖掘,我会用我发现的东西回答我自己的问题。

我不确定这是一个错误还是它的工作方式。

要获得基本授权,您必须在 pageSettings 中设置用户名/密码

以下是更改的代码。

var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug',
    pageSettings: {
       userName: 'uid',
       password: 'pwd'
    }
});

casper.start();

casper.open( 'http://internal/page.php').then(function(response) {
    this.fill('form[action="page2.php"]', {
        cattype: 'BLAH2',
        needdate: '04/21/2014'
    }, true);
});
casper.then(function() {
    this.capture('screenshot-form-entry.png');
});
casper.run(function() {
    this.exit();
});