前言
在 Web 自動化測試中,處理彈框是一項常見的任務。彈框可能包括警告、確認和提示框。Playwright 是一個功能強大的自動化測試工具,提供了處理這些彈框的靈活方法。在本文中,我們將深入探討如何使用 Python 編寫代碼來處理各種類型的彈框。
彈框的分類
彈框通常分爲3種,分別爲alert,confirm,promot。
- alert彈框:只有信息和確定按鍵
- confirm彈框:在alert彈窗基礎上增加了取消按鈕
- prompt彈框:在confirm的基礎上增加了可輸入文本內容的功能
三種彈框的圖像分別如下:
出現彈框時,我們需要點擊確定,彈框纔會消失,當我們使用selenium處理彈框時,通常是使用switch_to.alert來進行處理,具體代碼如下:
from selenium import webdriver
driver = webdriver.Chrome()
driver.switch_to.alert.accept() #確定、同意;三種彈窗都可使用
driver.switch_to.alert.dismiss() #取消、不同意;confirm和prompt彈窗中使用
title = driver.switch_to.alert.text #打印彈窗信息
alert = driver.switch_to.alert #獲取alert對象
alert.send_keys() #Prompt彈窗中輸入內容
下面,我們來看看playwright是如何處理彈框的。
dialog 事件監聽
playwright 框架可以監聽dialog事件,不管你alert 什麼時候彈出來,監聽到事件就自動處理了。
當出現 JavaScript 對話框時發出,例如alert、prompt。偵聽器必須dialog.accept()
或dialog.dismiss()
對話框 - 否則頁面將凍結等待對話框,並且單擊等操作將永遠不會完成。
處理代碼如下:
page.on("dialog", lambda dialog: dialog.accept())
注:當沒有page.on("dialog")偵聽器存在時,所有對話框都會自動關閉。
代碼如下:
page.on("dialog", handler)
處理警告框
警告框通常用於向用戶顯示一條消息,並要求用戶採取某種操作。在 Playwright 中,我們可以使用 page.on('dialog')
方法來處理警告框。以下是一個示例:
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()
來分別接受或取消確認框。以下是一個示例:
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)
來接受提示框並輸入文本。以下是一個示例:
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,並加快您的 Web 自動化測試流程吧!