噩梦 - 文件来自哪里?
nightmare - where does document come from?
下面的代码片段来自 https://github.com/segmentio/nightmare
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)
document
是从哪里来的?代码是 运行 on Node.js,因此没有浏览器上下文。我检查过 document
不是全局变量。显然也不是参数。我还验证了示例代码是否有效。怎么可能?
在 Nightmare 无头浏览器中,箭头函数作为参数传递为 运行,其中定义了 document
。
.evaluate(() => document.querySelector('#r1-0 a.result__a').href)
您还可以像这样向该函数传递额外的参数:
.evaluate((arg) => {
document.querySelector('#r1-0 a.result__a').href);
}, 'test');
下面的代码片段来自 https://github.com/segmentio/nightmare
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)
document
是从哪里来的?代码是 运行 on Node.js,因此没有浏览器上下文。我检查过 document
不是全局变量。显然也不是参数。我还验证了示例代码是否有效。怎么可能?
在 Nightmare 无头浏览器中,箭头函数作为参数传递为 运行,其中定义了 document
。
.evaluate(() => document.querySelector('#r1-0 a.result__a').href)
您还可以像这样向该函数传递额外的参数:
.evaluate((arg) => {
document.querySelector('#r1-0 a.result__a').href);
}, 'test');