在错误500上处理操纵up的单击和waitForNavigation承诺

时间:2020-09-28 07:12:55

标签: javascript puppeteer

场景:

单击“提交”按钮后,将发生发布导航,并且可能会发生3种情况:

  1. 好的。收到绿色图片“ img-ok”
  2. KO1。导航响应为200,并显示红色图像“ img-red-light”
  3. KO3。导航响应为500,并显示红色锁定图像“ img-lock”

这是我的代码

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,而是以默认超时结束。

我如何才能使其通过捕获?我应该采用其他方法吗?

1 个答案:

答案 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
}