下面的代码段是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
不是全局变量。显然也不是参数。我还验证了示例代码的工作原理。怎么可能?
答案 0 :(得分:3)
该箭头函数作为参数传递,以便在定义了document
的Nightmare无头浏览器中运行。
.evaluate(() => document.querySelector('#r1-0 a.result__a').href)
您还可以像这样将额外的参数传递给该函数:
.evaluate((arg) => {
document.querySelector('#r1-0 a.result__a').href);
}, 'test');