软件测试|web自动化测试神器playwright教程(十五)

简介: 软件测试|web自动化测试神器playwright教程(十五)

前言

我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识。
弹框通常分为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对于弹框的处理是怎样的?是否比selenium更加简单呢?下面我们就来介绍一下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)

使用示例

如果我们遇到如下页面,处理弹框的示例

在这里插入图片描述

代码如下:

from playwright.sync_api import sync_playwright


def run(playwright):
    chromium = playwright.chromium
    browser = chromium.launch(headless=False, slow_mo=3000)
    page = browser.new_page()
    # 没监听时,它自动会关闭
    page.evaluate("alert('霍格沃兹测试开发学社')")
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

当监听器存在时,它必须dialog.accept()或dialog.dismiss()对话框 - 否则页面将冻结等待对话框,并且单击等操作将永远不会完成。

from playwright.sync_api import sync_playwright


def handle_dialog(dialog):
    """监听后处理"""
    print(dialog.message)
    dialog.dismiss()


def run(playwright):
    chromium = playwright.chromium
    browser = chromium.launch(headless=False, slow_mo=3000)
    page = browser.new_page()
    page.on("dialog", handle_dialog)
    page.evaluate("alert('霍格沃兹测试开发学社')")
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

通过page.on("dialog", handler) 监听到dialog 事件,可以获取到dialog.message内容。

dialog 属性和方法

accept()当对话框被接受时返回。

dialog.accept()
dialog.accept(**kwargs)

参数 prompt_text(可选), 要在提示中输入的文本。如果对话框 type 没有提示,则不会产生任何影响.

default_value, 如果对话框是提示的,则返回默认提示值。否则,返回空字符串。

dialog.default_value

dismiss 关闭对话框

dialog.dismiss()

message 获取对话框中显示的消息

dialog.message

type返回对话框的类型,可以是alert, beforeunload, confirm或 prompt其中一个

dialog.type

总结

本文主要讲解了playwright对页面弹框的处理,后续我们将介绍playwright上传文件的处理。

更多技术资料,请点击!

相关文章
|
9月前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
368 11
|
2月前
|
JavaScript 前端开发 测试技术
Playwright自动化测试系列课(4) | 异步加载克星:自动等待 vs 智能等待策略深度解析​
本文深度解析Playwright自动化测试中的等待策略,对比自动等待(零配置防御机制)与智能等待(精准控制异步场景)的核心差异。通过实战案例讲解等待机制的选择标准、常见失效原因及调试技巧,帮助开发者有效解决页面异步加载问题,提升测试脚本的稳定性和执行效率。
|
2月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
2月前
|
JavaScript 测试技术 API
Playwright自动化测试系列(3) | 第二阶段:核心技能与调试 ​​交互操作大全
本课程为Playwright自动化测试第三阶段,深入讲解核心交互操作与调试技巧。涵盖基础到高级交互、文件上传下载、疑难问题解决及复杂场景应对,并提供稳定性优化方案,帮助开发者高效构建健壮的自动化测试脚本。
|
1月前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
2月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
2月前
|
人工智能 JavaScript 前端开发
Playwright自动化测试系列课(5) | ​​调试神器实战:Trace Viewer 录屏分析 + AI 辅助定位修复​
Playwright 的 Trace Viewer 提供录屏级追踪,还原测试全过程,帮助定位偶发故障。结合 AI 实现自动修复,大幅提升调试效率,成为自动化测试利器。
|
3月前
|
人工智能 自然语言处理 JavaScript
专为 Claude Code 设计的基于 YAML 的 Playwright MCP 自动化测试
YAML配置结合Claude Code与Playwright MCP,将自动化测试变得人人可用。通过简洁的YAML语法替代复杂的JavaScript代码,解决传统测试中冗长、硬编码和复用性差等问题。自然语言描述测试步骤,AI解析执行,支持多环境切换与智能报告生成,极大降低技术门槛,提升团队协作效率。无论是开发、QA还是产品经理,都能轻松参与测试流程,真正实现可读、易维护的自动化测试新范式。
|
7月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
180 20
|
9月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
264 31
Selenium IDE:Web自动化测试的得力助手