Почему следующий скрипт Puppeteer дает значение undefined для ExecutionContext.evaluateHandle? - PullRequest
0 голосов
/ 31 октября 2018

Сейчас я изучаю API Puppeteer и использую 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 

Я использую пример прямо с сайта кукловода: https://github.com/GoogleChrome/puppeteer/blob/v1.9.0/docs/api.md#

1 Ответ

0 голосов
/ 31 октября 2018

Вы ищете селектор запросов , а не eval. Вы также пропустили await. Это должно работать:

        const prefsDenyButton = await frame.$('#option-refuse-phv1L');
        await prefsDenyButton.click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...