PhantomJS使用基本auth返回null进行评估

时间:2012-05-10 21:24:14

标签: javascript basic-authentication phantomjs

我正在尝试在基本始终为auth的页面上使用PhantomJS,例如,此页面

http://alexturpin.net/authtest:rosebud

使用以下代码

var webpage = require('webpage');

page = webpage.create();
page.settings = {
    userName: "test",
    password: "rosebud"
};

page.open("http://alexturpin.net/auth/", function(status) {
    console.log(status);
    var retval = page.evaluate(function() {
        return "test";
    });
    console.log(retval);
});

我得到了这个输出

$ phantomjs test.js
success
null

无论我尝试什么,evaluate都会继续null,即使该页面似乎已被打开,因为status包含"success"

如果我决定打开没有基本身份验证的网页,例如http://alexturpin.net/noauth,我仍会得到相同的结果。只有当我在打开页面之前完全删除身份验证设置时才能正常工作。

使用身份验证设置似乎与evaluate冲突。这是PhantomJS中的错误,还是我错过了什么?

2 个答案:

答案 0 :(得分:4)

使用该语法,您将清除设置对象,仅将其替换为userNamepassword。使用该代码进行设置:

page.settings.userName = "test";
page.settings.password = "rosebud";

可能PhantomJS应该更好地处理,即不依赖于settings对象的默认值。

答案 1 :(得分:-2)

这是一个关闭问题,尝试将您的console.log置于回调中