试图为Puppeteer项目提供一个GUI。 我曾考虑过使用Electron,但遇到错误:
Error: Passed function is not well-serializable!
当运行类似Puppeteer的功能时
await page.waitForSelector('.modal', { visible: true });
我在处理page.evaluate()
时找到了一种合适的序列化方法,但是在page.waitForSelector()
的情况下该如何进行呢?
是否可以根据需要解决Puppeter的API函数?
编辑
我决定重写
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");');