为什么以下 Puppeteer 脚本会为 ExecutionContext.evaluateHandle 提供 'undefined'?
Why is the following Puppeteer script giving an 'undefined' for ExecutionContext.evaluateHandle?
我目前正在学习 Puppeteer API,并且正在使用 v1.9.0。我在尝试单击 iframe 中的按钮的地方有以下代码:
const changePrefsFromAllToNone = async () => {
try {
const browser = await puppeteer.launch({
headless:false,
slowMo: 250});
const page = await browser.newPage();
await page.setViewport({width: 1280, height: 800});
await page.goto(baseUrl);
await page.waitForSelector('.widget-title');
const frame = page.frames().find(f => f.name() === 'iframe');
const prefsDenyButton = await frame.$eval('#option-refuse-phv1L');
prefsDenyButton.click();
} catch (error) {
console.log(error);
}
};
changePrefsFromAllToNone();
错误为:
Error: The following is not a function: undefined
at ExecutionContext.evaluateHandle
我正在使用直接来自 puppeteer 网站的示例:
https://github.com/GoogleChrome/puppeteer/blob/v1.9.0/docs/api.md#
您正在寻找 query selector,而不是 eval
。您还错过了 await
。这应该有效:
const prefsDenyButton = await frame.$('#option-refuse-phv1L');
await prefsDenyButton.click();
我目前正在学习 Puppeteer API,并且正在使用 v1.9.0。我在尝试单击 iframe 中的按钮的地方有以下代码:
const changePrefsFromAllToNone = async () => {
try {
const browser = await puppeteer.launch({
headless:false,
slowMo: 250});
const page = await browser.newPage();
await page.setViewport({width: 1280, height: 800});
await page.goto(baseUrl);
await page.waitForSelector('.widget-title');
const frame = page.frames().find(f => f.name() === 'iframe');
const prefsDenyButton = await frame.$eval('#option-refuse-phv1L');
prefsDenyButton.click();
} catch (error) {
console.log(error);
}
};
changePrefsFromAllToNone();
错误为:
Error: The following is not a function: undefined
at ExecutionContext.evaluateHandle
我正在使用直接来自 puppeteer 网站的示例: https://github.com/GoogleChrome/puppeteer/blob/v1.9.0/docs/api.md#
您正在寻找 query selector,而不是 eval
。您还错过了 await
。这应该有效:
const prefsDenyButton = await frame.$('#option-refuse-phv1L');
await prefsDenyButton.click();