嗨即时通讯学习木偶无头浏览器,但有一些我不明白的东西
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);
我做错了什么?也许我需要学习一些新东西
谢谢!
将变量作为参数传递给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上了解更多相关信息。
你不能使用变量作为选择器,因为它必须是一个String,即带有有效CSS选择器的DOMString,如.querySelector(“#main,#basic,#exclamation”),否则你将收到一个错误。