1

我正在尝试在具有基本始终身份验证的页面上使用 PhantomJS,例如,此页面

http://alexturpin.net/auth ( test: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 中的错误,还是我错过了什么?

4

2 回答 2

4

使用该语法,您将清除设置对象,仅将其替换为userNameand password。使用该代码设置它们:

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

可能 PhantomJS 应该处理得更好,即不依赖settings对象作为默认值。

于 2012-05-12T11:22:22.447 回答
-2

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

于 2012-05-10T21:34:57.000 回答