Typescript 如何检查木偶演员页面当前是否处于导航状态?

Typescript 如何检查木偶演员页面当前是否处于导航状态?,typescript,puppeteer,Typescript,Puppeteer,我在木偶演员身上写些包装纸。我有一个通用的“点击”功能和一个“获取HTML”功能: 如您所见,click()函数只接收一个querySelector,然后单击找到的任何元素 问题是,如果此元素单击导致导航,后续操作可能会遇到此错误: 执行上下文被破坏,很可能是因为导航错误 例如,如果客户端代码执行以下操作: const page = new Page(...) ... await page.click('someSelector')//If this selector matches a li

我在木偶演员身上写些包装纸。我有一个通用的“点击”功能和一个“获取HTML”功能:

如您所见,click()函数只接收一个querySelector,然后单击找到的任何元素

问题是,如果此元素单击导致导航,后续操作可能会遇到此错误:

执行上下文被破坏,很可能是因为导航错误

例如,如果客户端代码执行以下操作:

const page = new Page(...)
...

await page.click('someSelector')//If this selector matches a link, navigation is triggered.

await page.getHtml()//Then there is an Error
是否有任何方法可以检查是否存在挂起的导航,以便我可以在各种函数中有条件地等待它


默认情况下,我不能在单击功能中等待导航,因为这会导致代码挂起,以防单击导致没有导航。

这样的解决方法可能会有所帮助吗

const[\uu,导航]=wait Promise.allselled([
元素单击(),
page.waitForNavigation(),
]);
如果(navigation.status==='completed')/*有导航。*/;
else/*超时,没有导航。*/;

您可以检查document.readyState似乎不起作用,原因很简单:为了检查document.readyState,我需要调用page.evaluate,这会引发错误。
const page = new Page(...)
...

await page.click('someSelector')//If this selector matches a link, navigation is triggered.

await page.getHtml()//Then there is an Error