嗨,我正在学习 puppeteer headless 浏览器,但有些东西我不明白
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 is not defined
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 时,它将参数传递给它,然后它在浏览器上下文中变得可用。
在 puppeteer 上了解更多信息 API docs .
关于javascript - page.evaluate 中的 puppeteer 引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925586/