寻找一些反馈。在 Puppeteer 中,我想检查导航是否已经发生,如果有则做一些事情,如果没有发生则做其他事情(例如再试一次)。我想出的两种方法是:
if (await page.url() != finalURL) {
let t = 0;
busy: while(t > 400) {
try {
await Promise.all([
await page.click('#tryAgainLink'),
await page.waitForNavigation(),
]);
break busy;
} catch(err) {
// navigation didn't happen
t++;
await page.waitForTimeout(1500);
}
}
}
但是我的理解是,尝试/捕获流逻辑并不理想。我的选择是这样的:
let t = 0;
busy: while(await page.url() != finalURL) {
await page.click('#tryAgainLink');
await page.waitForTimeout(1500);
t++;
if(t > 400) {
break busy;
}
}
我想知道我是否应该waitForNavigatin在那里,但如果没有,我将不得不再次捕获抛出的错误。我的意思是测试这个,但我不确定await page.url()while 循环是否会在导航发生时触发几次,和/或是否会破坏页面上下文。
有没有比上面两种方法更好的方法呢?第一个确实有效,我很想保持原样。谢谢。
BIG阳
饮歌长啸
莫回无
相关分类