Кукловод в электронном режиме: ошибка: выполненная функция плохо сериализуема - PullRequest
1 голос
/ 28 марта 2020

Попытка придумать GUI для проекта Puppeteer. Я думал об использовании Electron, но столкнулся с ошибкой:

Error: Passed function is not well-serializable!

при запуске функций Puppeteer, таких как:

await page.waitForSelector('.modal', { visible: true });

Я нашел правильный способ сериализации при работе с page.evaluate(), но как продолжить в случае page.waitForSelector()?

Есть ли обходной путь для правильной сериализации функций API Puppeter при необходимости?

РЕДАКТИРОВАТЬ

Я решил переписать

await page.waitForSelector('.modal', { visible: true });

, используя page.evaluate, вот код:

// first recreate waitForSelector
  const awaitSelector = async (selector) => {
    return await new Promise(resolve => {
      const selectorInterval = setInterval(() => {
        if ($(selector).is(':visible')) {
          console.log(`${selector} visible`);
          resolve();
          clearInterval(selectorInterval);
        };
      }, 1000);
    });
  }

и позже вызовите эту функцию используя page.evaluate ():

// remember to pass over selector's name, in this case it is ".modal"
await page.evaluate('(' + awaitSelector.toString() + ')(".modal");');
...