phantomjs陷入[DEBUG] WebPage - setupFrame""

时间:2015-11-12 23:47:18

标签: javascript phantomjs

你能告诉我为什么以下脚本不起作用吗? PhantomJS卡在

  

[DEBUG] WebPage - setupFrame""。

// phantomjs --debug=true --ignore-ssl-errors=yes --ssl-protocol=any test.js < data.json

var page = require('webpage').create();
var system = require('system');
var input = JSON.parse(system.stdin.read(2000));

console.log(JSON.stringify(input));

//phantom.onConsoleMessage = function(msg){ console.log(msg); }

page.onResourceError = function(resourceError) {
        page.reason = resourceError.errorString;
        page.reason_url = resourceError.url;
};

page.open(input.address, function(status){ 

    if (status !== 'success'){
        console.log("url: "+page.reason_url+"reason: "+page.reason);
        phantom.exit(1)
    }

    page.onLoadFinished = function(){
        input.cookies = page.cookies;
        console.log(JSON.stringify(input));
        phantom.exit();
    };

});

data.json

{"cookies": [], "address": "https://google.com"}

1 个答案:

答案 0 :(得分:1)

由于页面加载后没有进一步的说明,它不会做任何事情而只是坐在那里。

page.open的回调实际上与page.onLoadFinished相同。如果在它之间没有采取某种行动(网站重定向,点击,表单提交),则在已经调用它之后再次设置它将不会再次运行它。

尝试:

page.open(input.address, function(status){ 
    if (status !== 'success'){
        console.log("url: "+page.reason_url+"reason: "+page.reason);
        phantom.exit(1)
    }

    input.cookies = page.cookies;
    console.log(JSON.stringify(input));
    phantom.exit();
});