嗨我正在学习木偶无头浏览器,但有些东西我不明白
1)为什么我不能将变量用作选择器?
这是有效的
const lastUpdate = await page.evaluate(() => document.querySelector('body > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(3) > td:nth-child(2) > strong').textContent);
但这给了我参考错误LAST_UPDATE SELECTOR未定义
const LAST_UPDATE_SELECTOR = 'body > table > tbody > tr:nth-child(2) > td > table > tbody > tr:nth-child(3) > td:nth-child(2) > strong';
const lastUpdate = await page.evaluate(() => document.querySelector(LAST_UPDATE_SELECTOR).textContent);
我做错了什么?也许有一些我需要学习的东西
谢谢!
答案 0 :(得分:5)
将变量作为参数传递给evaluate
函数。
const selector = '#someSelector';
// 2. read the passed data
const lastUpdate = await page.evaluate((selector) => {
// 3. use it here
document.querySelector(selector).textContent,
// 1. Pass it here
}, selector);
发生了什么事?
.evaluate
接受两个参数pageFunction
,其余参数序列化args
。当运行pageFunction时,它将参数传递给它,然后它在浏览器上下文中变为可用。
在木偶操作员API docs上了解详情。
答案 1 :(得分:-1)
你不能使用变量作为选择器,因为它必须是一个String,即一个带有有效CSS选择器的DOMString,如.querySelector(" #main,#basic,#exclamation")否则你会收到一个错误。