Evaluate in PhantomJS doesn't seem to work

时光毁灭记忆、已成空白 提交于 2019-12-01 21:49:50

问题


I have a problem with JavaScript magic. When I execute this code:

var page = require('webpage').create();
var url="http://google.com";
page.open(url, function (status){
  if (status!== "success") {
    console.log("Fail to load: "+url)
  }else{
    console.log('1');
    page.evaluate(function() {
      console.log('2');
      });   
    console.log('3');
  }
phantom.exit();
});

console have only 1 and 3 and no 2. Can anyone say why?

If I paste after my code DOM manipulation example (but it never execute) I have my two. Did I forget something important?


回答1:


PhantomJS won't log console messages in .evaluate() statements by default. Just include

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

See this page for more details/in-depth example:

http://code.google.com/p/phantomjs/wiki/QuickStart#Code_Evaluation




回答2:


From Google Code

Any console message from a web page, including from the code inside evaluate(), will not be displayed by default. To override this behavior, use the onConsoleMessage callback.




回答3:


If you only want select logs to come through, you can return the value that you'd like to print.

For example:

console.log(page.evaluate(function() {
    return '2';
});


来源:https://stackoverflow.com/questions/11121734/evaluate-in-phantomjs-doesnt-seem-to-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!