page.evaluate()不打印控制台消息

时间:2015-02-24 11:42:46

标签: javascript phantomjs

我是Javascript的初学者,也是phantomjs的初学者。我试图运行这个简单的控制台程序。但它没有打印This is page evaluating!。我也可以在控制台Page is opened successfully上看到此消息。

这是我的计划:

var page=require('webpage').create();

page.open("https://www.google.com/", function(){
    console.log("Page is opened successfully");

    page.evaluate(function(){
        console.log('This is page evaluating!');
    });

    phantom.exit();
});

完成输出:

Page is opened successfully

1 个答案:

答案 0 :(得分:1)

您必须注册page.onConsoleMessage事件才能看到打印到控制台的页面上下文中的console.log(),因为页面上下文(在page.evaluate()内)是沙箱,而且这些事件是没有自动显示。

page.onConsoleMessage = function(msg, lineNum, sourceId) {
    console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};

在致电page.evaluate()之前注册参加活动,其中包含您感兴趣的console.log()。大多数情况下,这应该在初始化全局变量后完成:

var page = require('webpage').create();

page.onConsoleMessage = function(msg) {
    console.log('remote> ' + msg);
};

page.open("https://www.example.com/", function(){
    console.log("Page is opened successfully");

    page.evaluate(function(){
        console.log('This is page evaluating!');
    });

    phantom.exit();
});

其他有用的活动包括:onResourceErroronErroronResourceError