为什么以下 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();