Javascript PhantomJS includeJs()+;嵌套的evaluate()不工作

Javascript PhantomJS includeJs()+;嵌套的evaluate()不工作,javascript,jquery,phantomjs,Javascript,Jquery,Phantomjs,考虑以下代码 var page = require('webpage').create(); console.log('The default user agent is ' + page.settings.userAgent); page.settings.userAgent = 'Lisas headless browser'; page.open('http://www.httpuseragent.org', function(status) { if (status !== 's

考虑以下代码

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'Lisas headless browser';
page.open('http://www.httpuseragent.org', function(status) {
    if (status !== 'success')
    {
        console.log('Unable to access network or site is down');
    }else{
        page.includeJs(
            // Include the https version, you can change this to http if you like.
            'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js',
            function() {
                (page.evaluate(function() {
                    // jQuery is loaded, now manipulate the DOM
                    console.log(document.getElementById('myagent').textContent);
                }))
            }
        );
    }
    phantom.exit();
});

我正在尝试运行一些代码来插入jquery,然后允许我继续执行操作,但它不会计算includeJs()

编辑:正如瓦维洛夫在下面的评论中提到的,您需要订阅“page.onsolemessage”事件,以便在page.evaluate()回调中使用console.log()。我已经更新了下面的代码块来反映这一点

下面的代码将使用jQuery从页面捕获用户代理文本,还将捕获页面内容被操纵的证据

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'Lisas headless browser';
// simple 'page.onConsoleMessage' event handler
page.onConsoleMessage = function (msg) {
  console.log('page.onConsoleMessage');
  console.log(msg);
};
page.open('http://www.httpuseragent.org', function(status) {
  if (status === 'success') {
    // capture the rendered page to 'before.jpg'
    page.render('before.jpg');
    // load the jQuery library
    page.includeJs(
      'http://code.jquery.com/jquery-1.8.2.min.js',
      function() {
        // jQuery is loaded, now manipulate the DOM
        var agent = page.evaluate(function() {
          // This code is executed within the loaded page
          // get the user agent string
          var text = $('#myagent').text();
          // log the text to the console
          console.log('Inside page.evaluate ::', text);
          // time for some mischief
          $('#myagent').html('PhantomJS Strikes Again!');
          // return the text string
          return text;
        });
        // capture the evidence
        page.render('after.jpg');
        // print the user agent text
        console.log(agent);
        // exit now
        phantom.exit(0);
      });
  } else {
    console.log('Unable to access network or site is down');
    phantom.exit(1);
  }
});
结果控制台输出:

The default user agent is Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1
page.onConsoleMessage
Inside page.evaluate :: Your Http User Agent string is: Lisas headless browser
Your Http User Agent string is: Lisas headless browser

实际上,他可以在page.evaluate中使用console.log。只需要订阅来自控制台的消息。