1

基本的な常に認証のあるページ、たとえばこのページで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戻り続けます。nullstatus"success"

http://alexturpin.net/noauthのように、基本認証なしでページを開くことにした場合でも、同じ結果が得られます。ページを開く前に最終的に認証設定を完全に削除した場合にのみ、機能します。

認証設定の使用は、と競合しているようですevaluate。これはPhantomJSのバグですか、それとも何か見落としていましたか?

4

2 に答える 2

4

userNameこの構文を使用すると、設定オブジェクトが消去され、 andのみに置き換えられますpassword。そのコードを使用してそれらを設定します。

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

settingsおそらく、PhantomJSはそれをより適切に処理する必要があります。つまり、デフォルトをオブジェクトに依存しないでください。

于 2012-05-12T11:22:22.447 に答える
-2

これはクロージャの問題です。console.logをコールバックに入れてみてください

于 2012-05-10T21:34:57.000 に答える