Разблокировка всплывающих окон: полное руководство по всплывающим окнам драматурга на Python
Разблокировка всплывающих окон: полное руководство по всплывающим окнам драматурга на Python

Предисловие

В автоматизированном веб-тестировании обработка всплывающих окон — обычная задача. Всплывающие окна могут содержать предупреждения, подтверждения и подсказки. Playwright — это мощный инструмент автоматического тестирования, который обеспечивает гибкий способ обработки всплывающих окон. В этой статье мы подробно углубимся в то, как писать код на Python для обработки различных типов всплывающих окон.

Классификация всплывающих окон

Обычно существует три типа всплывающих окон: предупреждение, подтверждение и продвижение.

  • Всплывающее окно оповещения: только информация и кнопка ОК
  • Всплывающее окно подтверждения: кнопка отмены добавляется на основе всплывающего окна предупреждения.
  • Всплывающее окно подсказки: при подтверждении добавляется функция ввода текстового содержимого.

Изображения трех всплывающих окон следующие:

Когда появляется всплывающее окно, нам нужно нажать «ОК», прежде чем всплывающее окно исчезнет. Когда мы используем селен для обработки всплывающего окна, мы обычно используем для его обработки switch_to.alert. Конкретный код выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.switch_to.alert.accept() #Подтверждаем, соглашаемся; все три всплывающих окна можно использовать;
driver.switch_to.alert.dismiss() #Отмена, несогласие используется во всплывающих окнах подтверждения и подсказки;
title = driver.switch_to.alert.text #Печать всплывающей информации
alert = driver.switch_to.alert #Получить объект оповещения
alert.send_keys() #PromptВведите содержимое во всплывающем окне

Далее давайте посмотрим, как драматург обращается со всплывающими окнами.

прослушиватель событий диалога

Платформа драматурга может прослушивать события диалога. Независимо от того, когда появляется ваше оповещение, событие будет автоматически обработано после его прослушивания.

когда появится диалоговое окно JavaScript,Напримерalert、prompt。Слушатель долженdialog.accept()илиdialog.dismiss()диалоговое окно - В противном случае страница зависнет в ожидании диалогового окна, а щелчки и т. д. никогда не завершатся.

Код обработки следующий:

Язык кода:python
кодКоличество запусков:0
копировать
page.on("dialog", lambda dialog: dialog.accept())

Примечание. Если прослушиватель page.on("dialog") не существует, все диалоговые окна будут автоматически закрыты.

Код выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
page.on("dialog", handler)

Обработка окон предупреждений

Окна оповещений обычно используются для отображения сообщения пользователю и запроса его на выполнение определенных действий. существовать Playwright , мы можем использовать page.on('dialog')метод Обработка окон предупреждений. Вот пример:

Язык кода:python
кодКоличество запусков:0
копировать
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    def on_dialog(dialog):
        print('Dialog message:', dialog.message)
        dialog.accept()

    page.on('dialog', on_dialog)
    page.goto('https://example.com')

В этом примере мы определяем on_dialog функция для обработки всплывающих окон. В этой функции мы распечатываем сообщение окна предупреждения и принимаем его.

Обработка поля подтверждения

Поля подтверждения обычно используются для отображения сообщения пользователю и запроса подтверждения или отмены действия. существовать Playwright , мы можем использовать dialog.accept()или dialog.dismiss() принять или отменить поле подтверждения соответственно. Вот пример:

Язык кода:python
кодКоличество запусков:0
копировать
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    def on_dialog(dialog):
        print('Dialog message:', dialog.message)
        dialog.accept()

    page.on('dialog', on_dialog)
    page.goto('https://example.com')

    # Perform actions that trigger a confirm dialog
    # Your code here

В этом примере мы делаем это, вызывая dialog.accept() принять поле подтверждения. Если вы хотите отменить окно подтверждения, вы можете позвонить dialog.dismiss()

Обработка поля подсказки

Окна подсказок обычно используются для отображения сообщения пользователю и просят его ввести текст или нажать кнопку «ОК». существовать Playwright , мы можем использовать dialog.accept(prompt_text) чтобы принять приглашение и ввести текст. Вот пример:

Язык кода:python
кодКоличество запусков:0
копировать
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    def on_dialog(dialog):
        print('Dialog message:', dialog.message)
        dialog.accept('Hello, Playwright!')

    page.on('dialog', on_dialog)
    page.goto('https://example.com')

    # Perform actions that trigger a prompt dialog
    # Your code here

В этом примере мы делаем это, вызывая dialog.accept('Hello, Playwright!') чтобы принять приглашение и ввести текст.

Подвести итог

Из этой статьи мы узнали, как использовать Python для написания кода для обработки различных типов всплывающих окон. Playwright предоставляет простой и мощный API, который упрощает работу со всплывающими окнами. Начните работу с Playwright и ускорьте процесс веб-автоматического тестирования!

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода