噩梦-文件从何而来?

时间:2019-05-23 20:50:59

标签: javascript node.js nightmare

下面的代码段是https://github.com/segmentio/nightmare的示例

imghdr.what()

我不能全神贯注于这一行:

const Nightmare = require('nightmare')
const nightmare = Nightmare({ show: true })

nightmare
  .goto('https://duckduckgo.com')
  .type('#search_form_input_homepage', 'github nightmare')
  .click('#search_button_homepage')
  .wait('#r1-0 a.result__a')
  .evaluate(() => document.querySelector('#r1-0 a.result__a').href)
  .end()
  .then(console.log)
  .catch(error => {
    console.error('Search failed:', error)
  })

.evaluate(() => document.querySelector('#r1-0 a.result__a').href) 来自哪里?该代码在Node.js上运行,因此没有浏览器上下文。我检查了document不是全局变量。显然也不是参数。我还验证了示例代码的工作原理。怎么可能?

1 个答案:

答案 0 :(得分:3)

该箭头函数作为参数传递,以便在定义了document的Nightmare无头浏览器中运行。

.evaluate(() => document.querySelector('#r1-0 a.result__a').href)

您还可以像这样将额外的参数传递给该函数:

.evaluate((arg) => {
  document.querySelector('#r1-0 a.result__a').href);
}, 'test');