场景:
单击“提交”按钮后,将发生发布导航,并且可能会发生3种情况:
这是我的代码
await Promise.all([
page.waitForNavigation({waitUntil: "networkidle0"}),
page.click(BUTTON_SIGN)
]
).then (ok => {
if(page.$("img-ok") != null) {
//Case 1
} else {
//Case 2
}
}).catch (err => {
//case 3
})
发生3)时,过程不会经过catch,而是以默认超时结束。
我如何才能使其通过捕获?我应该采用其他方法吗?
答案 0 :(得分:1)
我认为page.goto()
的这份文档注释也可能对page.waitForNavigation()
有效:
远程服务器返回任何有效的HTTP状态代码(包括404“未找到”和500“内部服务器错误”)时,
page.goto
不会引发错误。可以通过调用response.status()
来检索此类响应的状态代码。
所以也许尝试这样的事情:
const [response] = await Promise.all([
page.waitForNavigation({waitUntil: "networkidle0"}),
page.click(BUTTON_SIGN)
]);
if (response.status() === 500) {
//Case 3
} else if(page.$("img-ok") != null) {
//Case 1
} else {
//Case 2
}