Как я могу передать переменную цикла для C в кукловод - PullRequest
0 голосов
/ 08 января 2019

Я хочу передать переменную цикла for в page.evaluate в puppeteer, чтобы получить все критерии галереи. Но это не работает. Это всегда сообщает UnhandledPromiseRejectionWarning: Error: Evaluation failed.

Ниже приведен пример моего кода:

const puppeteer = require('puppeteer-core');

(async () => {
    const browser = await puppeteer.launch({executablePath:'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'});
    const page = await browser.newPage();
    await page.goto('D:\\Code Workplace\\Javascripts\\TurnPage\\index.html', {waitUntil: 'networkidle2'});
    for (let index = 0; index < 4; index++) {
        await page.evaluateHandle((index) => {
            $('.flipbook').turn('page', index);
        }, index);
    }
    await sleep(300);
    await page.emulateMedia('print');
    await page.pdf({path: 'hn.pdf', format: 'A4', printBackground: true});
    await browser.close();
})();

Так что мне нужна помощь, чтобы передать переменную цикла в переменную. Кто-нибудь сталкивался с этой проблемой раньше? Спасибо за вашу любезную помощь.

1 Ответ

0 голосов
/ 08 января 2019

Edit:

Я проверил страницу, на которой он выбрасывает 2 ошибки в кукловоде:

  1. Без ожидания загружен плагин jQuery и turn.js

    Оценка не удалась: ReferenceError: $ не определено

  2. index должен начинаться с 1, а не 0 или

    Ошибка: оценка не удалась: TurnJsError

Фиксированный код:

await page.waitForFunction('typeof(jQuery) == "function" && typeof($().turn) == "function"', {
  timeout: 5000
});

for (let index = 1; index < 8; index++) {
  await page.evaluateHandle((index) => {
    $('.flipbook').turn('page', index);
  }, index);

  //await sleep(2000); // for debugging
}
...