当自动登录时,我点击一个元素,它可能会导致导航到另一个页面,但在密码无效的情况下,它只会在同一页面上显示错误消息,而实际上不会导致导航。
我试过:
await Promise.all([
this.page.submitButton.click(),
this.page.waitForNavigation()
]);
但是在没有导航的情况下会失败。我想拦截响应,检查登录是否成功/失败,但可能有更明确的方法来做到这一点?
当自动登录时,我点击一个元素,它可能会导致导航到另一个页面,但在密码无效的情况下,它只会在同一页面上显示错误消息,而实际上不会导致导航。
我试过:
await Promise.all([
this.page.submitButton.click(),
this.page.waitForNavigation()
]);
但是在没有导航的情况下会失败。我想拦截响应,检查登录是否成功/失败,但可能有更明确的方法来做到这一点?
3条答案
按热度按时间myzjeezk1#
这段代码应该给予你一个例子,说明如何理解你是停留在同一页还是导航:
1tuwyuhd2#
我认为除了
this.page.submitButton.click()
之外,您不需要其他代码。点击功能会等待你的导航。所以你可以在点击后检查你是否在同一个网址。
wb1gzix03#
看起来你对
await
有两个相互竞争的承诺--一个是出现错误消息,另一个是导航,只有一个最初会解决,因此我们可以使用Promise.any
来避免过多的等待或代码分支。请参阅
waitForURL
方法的waitUntil
选项,以更精确地控制您感兴趣的页面导航事件。