前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解锁弹框:Python 下的 Playwright 弹框处理完全指南

解锁弹框:Python 下的 Playwright 弹框处理完全指南

原创
作者头像
霍格沃兹测试开发Muller老师
发布2024-05-13 21:56:55
40902
代码可运行
发布2024-05-13 21:56:55
举报
文章被收录于专栏:muller的测试分享
运行总次数:2
代码可运行

前言

在 Web 自动化测试中,处理弹框是一项常见的任务。弹框可能包括警告、确认和提示框。Playwright 是一个功能强大的自动化测试工具,提供了处理这些弹框的灵活方法。在本文中,我们将深入探讨如何使用 Python 编写代码来处理各种类型的弹框。

弹框的分类

弹框通常分为3种,分别为alert,confirm,promot。

  • alert弹框:只有信息和确定按键
  • confirm弹框:在alert弹窗基础上增加了取消按钮
  • prompt弹框:在confirm的基础上增加了可输入文本内容的功能

三种弹框的图像分别如下:

出现弹框时,我们需要点击确定,弹框才会消失,当我们使用selenium处理弹框时,通常是使用switch_to.alert来进行处理,具体代码如下:

代码语言:python
代码运行次数:0
复制
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()对话框 - 否则页面将冻结等待对话框,并且单击等操作将永远不会完成。

处理代码如下:

代码语言:python
代码运行次数:1
复制
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
代码运行次数:1
复制
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 自动化测试流程吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 弹框的分类
  • dialog 事件监听
  • 处理警告框
  • 处理确认框
  • 处理提示框
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档