我具有以下函数,该函数单击具有“ rel = _nofollow”属性的链接,等待新页面标签打开,然后加载内容,但是有时页面不会加载,而是循环到下一页,脚本挂起。
如何在这里设置超时时间?
let clickAndWaitForTarget = async (clickSelector, page, browser) => {
const pageTarget = page.target();
await page.click(clickSelector);
const newTarget = await browser.waitForTarget(
target => target.opener() === pageTarget
);
const newPage = await newTarget.page(); //get the page object
await page.waitFor(10000);
return newPage;
};
我认为,如果我可以使其超时,然后可以返回false或某些内容来检查主要代码的成功或失败?
newpage = await clickAndWaitForTarget("a.someSelector", page, browser);
if(newpage){
var url = await newpage.url();
...
谢谢!
编辑:我正在使用Puppeteer 2.0.0版
答案 0 :(得分:0)
waitForTarget
具有超时选项。默认值为30秒,也许对您来说很多。
您可以执行以下操作:
let clickAndWaitForTarget = async (clickSelector, page, browser) => {
const pageTarget = page.target();
await page.click(clickSelector);
try {
const newTarget = await browser.waitForTarget(
target => target.opener() === pageTarget,
{ timeout: 3000} /*3 seconds instead*/
);
const newPage = await newTarget.page(); //get the page object
await page.waitFor(10000);
return newPage;
} catch {
return null;
}
};