Попытка придумать 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");');