如何检测页面导航后是否显示带有某些消息的警报。
Puppeteer能否检测或识别页面是否显示了警报框。
我尝试过
page.on('popup', ()=> {
console.log('popup detected');
});
另外,
page.on('dialog', ()=> {
console.log('popup detected');
});
正如评论中所说:如果在调用page.goto
之后注册事件处理程序(您的代码),则事件已在您侦听事件之前触发。
因此,请确保在您的代码之后调用page.goto
。
最初的回答:
如评论所述:如果在调用 page.goto
后注册事件处理程序(即您的代码),则事件在您监听事件之前已经被触发。
因此,请确保在调用 page.goto
之前注册事件处理程序。
private async gotoPage(path):Promise<Response|Result> {
return new Promise(async(resolve, reject) => {
await Promise.all([
this.page.on('dialog', async (dialog) => {
await dialog.dismiss().catch(() => {
console.log(dialog.message());
return new Result(TestStatus.FAIL, dialog.message());
});
}),
this.page.goto(`${this.baseURL}${path}`),
this.page.waitForNavigation({ waitUntil: 'load' })]).then(
async () => {
resolve(new Result(TestStatus.PASS, `Loading to path success : ${path}`));
},
async () => {
reject(new Result(TestStatus.FAIL, `Could not GotoPage : ${path}`));
});
});
}
page.goto
调用之前进行注册。这可能是您的问题吗? - Thomas Dondorfpage.goto
之前调用。也许你可以发布你的完整代码? - Thomas Dondorfreturn {code: 444, status: 'Incorrect credentials'} }); console.log(status.code); await this.page.goto(stepOneUrl, {waitUntil: 'load'});``` 你能告诉我如何返回所需的对象吗?因为我目前的方法不起作用。 感谢,现在能够检测到弹出窗口了。
- Sahil Paudel