解鎖彈框:Python 下的 Playwright 彈框處理完全指南

前言

在 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 自動化測試流程吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章