3 回答

TA貢獻1859條經驗 獲得超6個贊
您應該能夠執行以下操作:
await page.waitForFunction((finalUrl) => {
return document.location === finalUrl
}, {}, finalUrl).catch(retry)
但它可能更簡單:
await page.waitForResponse(finalUrl).catch(retry)

TA貢獻1951條經驗 獲得超3個贊
也許是這樣的:
if (page.url() !== finalURL) { // await is not needed here
let t = 0;
busy: while(t < 400) { // was '> 400' a typo?
const [_, navigation] = await Promise.allSettled([
page.click('#tryAgainLink'),
page.waitForNavigation(),
]);
if (navigation.status === 'fulfilled') break busy;
t++;
await page.waitForTimeout(1500);
}
}

TA貢獻1865條經驗 獲得超7個贊
我使用這種方法:
async function isNavigation() {
try {
await page.evaluate(() => console.log('any code'))
return false
} catch (ex) {
// check error, should be:
// "Execution context was destroyed, most likely because of a navigation"
return true
}
}
添加回答
舉報