Как я могу определить, если после навигации на странице отображается предупреждение с каким-либо сообщением.

Может ли кукловод обнаружить или определить, было ли на странице окно с предупреждением.

Я старался

page.on('popup', ()=> {
   console.log('popup detected');
});

Также,

page.on('dialog', ()=> {
   console.log('popup detected');
});
4
Sahil Paudel 14 Апр 2019 в 19:32

2 ответа

Лучший ответ

Как сказано в комментариях: если вы регистрируете обработчики событий (ваш код) после вызова page.goto, событие уже запущено до того, как вы прослушиваете событие.

Поэтому не забудьте позвонить page.goto после вашего кода.

2
Thomas Dondorf 14 Апр 2019 в 20:17

Вот мои два цента:

 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}`));
                });
        });
    }
0
Alferd Nobel 13 Мар 2020 в 01:25