Как поймать диалоги браузера (например, загрузить или открыть) с помощью Playwright for Python?

Я пытался обработать диалоговое окно браузера с Playwright for Python в Firefox (в данном случае, но я предполагаю, что браузер не имеет значения), то есть диалоговое окно, которое было открыто Firefox, чтобы спросить, открыть или сохранить файл. Диалог появляется после того, как я нажимаю кнопку. Ссылка на файл не выставлена, поэтому другим способом я не могу его скачать.

Я попытался поймать dialog событие:

with page.expect_event("dialog") as page_info:
    button = page.querySelector('button[id=\"download\"]')
    button.click()

который истекает. Затем я подумал, что нашел решение в этом билете GitHub. Однако и следующее не помогло:

page.on("dialog", lambda dialog: dialog.accept())
page.click("button")

Выполняйте такие диалоги - в отличие от диалогов, например, вызвано JavaScript alert() - не вызвать dialog событие? Я думаю, что нет, судя по ответам на этот пост: Можно ли перехватить событие диалога открытия / сохранения файла в браузере с помощью Javascript.

Если да, как я могу принять или отклонить такой диалог с помощью python-playwright?


person buddemat    schedule 24.01.2021    source источник


Ответы (1)


Попробуй это:

page.once("dialog", lambda dialog: dialog.accept())
person Kaol    schedule 26.01.2021
comment
Нет, это тоже не работает. - person buddemat; 26.01.2021