无法在Phantomjs中从page.evaluate()到页面上下文(page.onConsolleMessage)获取控制台消息

无法在Phantomjs中从page.evaluate()到页面上下文(page.onConsolleMessage)获取控制台消息,phantomjs,Phantomjs,由于一个模糊的原因(WebKit或PhantomJs中的Bug),console.log在page.evaluate中不起作用 您应该更改代码以使用console.info、console.warn或console.error var page = require("webpage").create(), loginPage = "https://subscriber.hoovers.com/H/login/login.html"; page.onConsoleMessage =

由于一个模糊的原因(WebKit或PhantomJs中的Bug),console.log在page.evaluate中不起作用

您应该更改代码以使用console.info、console.warn或console.error

var page = require("webpage").create(),

     loginPage = "https://subscriber.hoovers.com/H/login/login.html";

page.onConsoleMessage = function (msg) {

     console.log(msg);
};

page.open(loginPage);

page.onLoadFinished = function (status) {

    var url = page.url;
    console.log("Status:  " + status);
    console.log("Loaded:  " + url);
    pageload(url);
    page.render('url.png');

}

function pageload(url) {

    if (url == loginPage) {

        console.log("From loginPage");

        page.evaluate(function () {

            console.log("From pageload");

        });
    }
}
由于一个模糊的原因(WebKit或PhantomJs中的Bug),console.log在page.evaluate中不起作用

您应该更改代码以使用console.info、console.warn或console.error

var page = require("webpage").create(),

     loginPage = "https://subscriber.hoovers.com/H/login/login.html";

page.onConsoleMessage = function (msg) {

     console.log(msg);
};

page.open(loginPage);

page.onLoadFinished = function (status) {

    var url = page.url;
    console.log("Status:  " + status);
    console.log("Loaded:  " + url);
    pageload(url);
    page.render('url.png');

}

function pageload(url) {

    if (url == loginPage) {

        console.log("From loginPage");

        page.evaluate(function () {

            console.log("From pageload");

        });
    }
}
臭虫

解决方法是分配:

var page = require("webpage").create();
var loginPage = "https://subscriber.hoovers.com/H/login/login.html";

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

page.open(loginPage);

page.onLoadFinished = function (status) {

    var url = page.url;
    console.log("Status:  " + status);
    console.log("Loaded:  " + url);
    pageload(url);
    page.render('url.png');
    phantom.exit(0);
}

function pageload(url) {

    if (url == loginPage) {
        console.log("From loginPage");
        page.evaluate(function () {
            console.info("From pageload");
        });
    }
}
在页面内部。评估

然后使用:

window.console.log = function(msg) { alert(msg) }; 
捕捉警报

错误

解决方法是分配:

var page = require("webpage").create();
var loginPage = "https://subscriber.hoovers.com/H/login/login.html";

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

page.open(loginPage);

page.onLoadFinished = function (status) {

    var url = page.url;
    console.log("Status:  " + status);
    console.log("Loaded:  " + url);
    pageload(url);
    page.render('url.png');
    phantom.exit(0);
}

function pageload(url) {

    if (url == loginPage) {
        console.log("From loginPage");
        page.evaluate(function () {
            console.info("From pageload");
        });
    }
}
在页面内部。评估

然后使用:

window.console.log = function(msg) { alert(msg) }; 

要捕获警报,请确保您的phantomjs设置没有禁用执行javascript

page.onAlert = function(msg) {
  console.log(msg);
};

确保您的phantomjs设置没有禁用执行javascript

page.onAlert = function(msg) {
  console.log(msg);
};

这可能是phantomjs各自版本中的一个bug,现在可以工作了,版本1.9.8I投票关闭,因为OP的问题在phantomjs的当前版本中没有出现,所以它不相关。这可能是phantomjs各自版本中的一个bug,现在可以工作了,对于版本1.9.8,我投票决定关闭,因为OP的问题在当前版本的PhantomJS中没有出现,所以它不相关。