为什么不是't casper.log记录任何内容

Why isn't casper.log logging anything?

本文关键字:log 记录 任何内 casper 为什么不      更新时间:2023-09-26

我想要下面的Casperjs脚本来打开谷歌,搜索一个术语,并记录页面的标题:

var title = ""
var casper = require('casper').create({
  verbose: true,
  logLevel: 'debug',
  pageSettings: {
    loadImages: false, // The WebPage instance used by Casper will
    loadPlugins: false // use these settings
    //userAgent: 'Mozilla/5.0 (Macintosh Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'
  }
})
casper.start('http://google.co.uk/', function() {
  // search for 'casperjs' from google form
  this.fill('form[action="/search"]', {
    q: 'casperjs'
  }, true)
})
casper.thenEvaluate(function() {
  // aggregate results for the 'casperjs' search
  title = document.title
})
casper.log(title, 'warning')
casper.run()

但什么也不输出:

[警告][幻影]

我做错了什么?

您的代码有两个问题。

  • CasperJS是异步的
  • CasperJS(就像PhantomJS一样)有两个上下文,DOM上下文是沙盒的

这应该有效:

casper.then(function() {
    var title = this.evaluate(function() {
      return document.title
    })
    this.log(title, 'warning')
})

甚至这个:

casper.then(function() {
    var title = this.getTitle()
    this.log(title, 'warning')
})