我有以下代码,但有时它挂在page.click(clickSelector)上,我必须重新启动该过程。我正在尝试确保它可以在后台运行而不会受到干扰。
let clickAndWaitForTarget = async (clickSelector, page, browser) => {
try {
await page.waitForSelector(clickSelector, { timeout: 60000 });
} catch (error) {
console.log('SELECTOR ' + clickSelector + ' NOT FOUND IN 60 SECONDS');
return null;
}
const pageTarget = page.target();
console.log("SELECTOR FOUND! LET'S ROLL...");
await page.click(clickSelector); // HANGING HERE
console.log('CLICKED IT');
try {
const newTarget = await browser.waitForTarget(
target => target.opener() === pageTarget,
{ timeout: 45000 }
);
const newPage = await newTarget.page();
return newPage;
} catch {
return null;
}
};
有什么想法吗? 我正在使用Puppeteer 2.0.0版
答案 0 :(得分:0)
您可以尝试这个。
await Promise.all([
page.waitForNavigation(waitOptions),
page.click(selector, clickOptions),
]);
我认为这很有帮助。