UI自动化之Playwright简介 01UI自动化介绍UI自动化测试是指通过编写自动化脚本来模拟用户操作UI界面并验证UI的正确性、可用性及性能的一种测试方法。在UI自动化测试中通过使用专门的工具和编程语言对UI界面进行自动化操作从而可以提高测试的效率、降低测试成本并减少错误率。UI自动化测试通常用于GUI应用程序、Web应用程序及移动应用程序等的测试。02主流框架的认识最常用的开源UI自动化框架之一支持多种编程语言可用于测试Web应用程序、移动应用程序和桌面应用程序。Appium一个开源的移动应用程序自动化框架可用于测试iOS和Android应用程序支持多种编程语言。Playwright;是一款跨浏览器的UI自动化工具它具有卓越的性能、可靠性和灵活性支持多种浏览器和平台。Telerik Test Studio可用于测试Web应用程序和桌面应用程序支持多种编程语言包括C#、VB.NET和Java。selenium与playwright底层运行原理Selenium底层运行的原理是使用WebDriver来控制浏览器的行为实现自动化测试或者网站自动化操作。WebDriver是一个接口实现了控制不同浏览器的行为。同时WebDriver也提供了很多操作浏览器的API如查找元素模拟键盘和鼠标操作等。 Playwright 是由 Microsoft 开发的一个新型的自动化测试工具其底层原理与 Selenium 有所不同。Playwright 采用的是“模拟器”模式可以在浏览器内核的基础上进行更深层次的模拟操作。具体来说Playwright 采用的是 Chromium 调试协议通过发送与浏览器交互的命令模拟用户的操作。因此Playwright 在测试效率、稳定性和功能性方面均优于 Selenium。同时Playwright 还能够同时操作多个浏览器进行多端测试。适合自动化的项目长期的。短期几天的不合适稳定。临时搞活动不适合规范的。有文档设计规范。接口文档需求文档。重复的。代码相关代码适合做重复工作03 环境安装1、优先安装python环境2、安装playwrightpip install playwright3、安装Playwright库和浏览器引擎playwright install4、开启录制playwright codegen04 PLAYWRIGHT基本操作1.1. playwright浏览器基本操作# 打开chrome浏览器,headlessFalse 非无头模式,最大化browser sync_playwright().start().chromium.launch(headlessFalse, args[--start-maximized]) # 创建新页面page browser.new_page() # goto打开指定网址page.goto(https://www.baidu.com)page.reload() # 刷新page.go_forward() # 前进page.go_back() # 后退page.close() # 关闭窗口browser.close()# 关闭浏览器简单小例子1.2.playwright元素定位playwright推荐使用定位器也就是locators定位器是自动等待与重试的核心能力。更符合用户行为的定位器。这些是推荐的内置定位器l page.get_by_role()通过显式和隐式可访问性属性定位。l page.get_by_text()按文本内容定位。l page.get_by_label()通过关联标签的文本查找表单控件。l page.get_by_placeholder()按占位符查找输入。l page.get_by_alt_text()通过其文本替代品定位元素通常是图像。l page.get_by_title()通过标题属性定位元素。l page.get_by_test_id()根据其data-testid属性定位元素可以配置其他属性。除了以上这些selenium的8种by元素定位如id、xpath、css、等都可使用还有W3C标准规定的webDriver协议为5种定位方式CSS、Link text、Partial link text、Tag name、XPathplaywright把这些定位归类成3种分别是css、xpath、text如1.3.playwright元素操作Ø 下拉选择框selectOpion、value、labei、indexØ 文件上传setInputFiles、单个文件、多个文件、拖放上传Ø 鼠标点击click、dbclickØ 鼠标拖动down、upØ 鼠标移动moveØ 触摸屏幕tagØ 键盘按键pressØ 截屏、录屏screenshot、recordVideo1.4.Playwright 等待方式强制等待time.sleep()全局限制每一个元素无论有没有查找到都要在指定时间过后进行下一个等待元素出现: page.waitForSelector(#selector)等待元素消失: page.waitForSelector(#selector, { state: hidden })指定等待时间page.wait_for_timeout(5000): 等待指定的时间毫秒启动浏览器时可设置等待时间未设置则默认等待时间30sbrowser playwright.chromium.launch({timeout: 30000}) // 设置超时时间为30秒page.evaluate(js_pha) --执行js语句1.5.Playwright 窗口和iframe切换page.expect_popup()是Playwright中的一个方法它会等待新的浏览器弹出窗口的出现并返回一个新页面的实例。如果在给定的时间内未找到任何新弹出窗口则抛出一个错误。iframe切换在网页当中应用得非常广泛尤其是页面比较复杂的情况需要单独设置一个独立的边框或者是栏目。通过iframe的id进入对应的iframe页面然后操作page.frame_locator(#YSF-IFRAME-LAYER)1.6.Playwright 断言05自动化常见问题汇总1.UI自动化测试是否需要连接数据库校验不需要按照测试金字塔层最上层UI层中间层API接口层最底层单元测试层可以早AIP接口层做数据库校验UI层只需要模拟用户操作2.UI自动测试用例如何设计UI自动化用例从手工用例中提取出来的更加注重测试用例的严谨性应该遵循以下原则1.优先选取覆盖产品核心功能的用例2.从成本上考量不要选择流程过于复杂的用例3.选取的用例可以是重复执行繁琐的部分4.优先实行正向的测试用例反向用例一般情况复杂数量多3.如何提高UI自动化脚本的稳定性1.尽量用相对路径xpath表达式2.查找元素优先使用显示等待非全局查找3.用例与用例之间尽量避免产生依赖用例可以单独执行4.用例执行结束后对测试场景进行还原避免影响其他用例执行5.脚本执行失败后加入重试机制提高用例的稳定性6.尽量保证单独的测试环境避免其他测试同步进行4.如何提高UI自动化脚本的可维护性1、po分层模式业务和页面元素的分离2、测试数据和用例的分离单独维护测试数据3、页面和用例共性提取4、可追溯日志5.自动化实现困难的地方1、需求经常变动脚本维护成本较高2、特殊元素难定位3、脚本执行不稳定经常fail最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学站这些资料希望能给你前进的路上带来帮助。​视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。

相关新闻

最新新闻

Dify插件离线安装全攻略:内网环境解决方案

Dify插件离线安装全攻略:内网环境解决方案

1. 项目背景与核心需求 在纯内网环境下安装Dify插件是个让不少开发者头疼的问题。我最近在一个金融客户现场就遇到了这个挑战——他们的开发环境完全隔离外网,但业务部门又急需使用Dify平台的Markdown导出插件来生成合规文档。经过三天折腾,终于摸索出一…

2026/7/23 13:24:42
Cortex-M3 NVIC与PWM协同设计:嵌入式实时控制核心实践

Cortex-M3 NVIC与PWM协同设计:嵌入式实时控制核心实践

1. 项目概述与核心价值在嵌入式系统开发,尤其是电机控制、开关电源、LED调光这类对时序和响应速度有严苛要求的领域,开发者常常面临两个核心挑战:如何高效、可靠地处理来自多个外设的异步事件(中断),以及如…

2026/7/23 13:24:42
告别公网IP!用OpenWRT软路由+Zerotier,保姆级搭建家庭异地组网(含Windows远程开机教程)

告别公网IP!用OpenWRT软路由+Zerotier,保姆级搭建家庭异地组网(含Windows远程开机教程)

零成本构建家庭异地组网:OpenWRT与Zerotier实战指南 想象一下这样的场景:出差途中急需调取家中NAS的工作文档,周末度假时想用平板访问卧室电脑里的4K电影库,或是深夜加班需要远程唤醒书房的主机。传统方案要么依赖昂贵的公网IP和专线服务,要么需要购置硬件穿透设备。而今…

2026/7/23 13:24:42
TI F280015x MCU:低成本实时控制方案,解锁电机与电源设计新可能

TI F280015x MCU:低成本实时控制方案,解锁电机与电源设计新可能

1. 项目概述:为什么F280015x是实时控制领域的“性价比新星”在嵌入式系统,尤其是工业自动化、汽车电子和新能源领域,“实时控制”这四个字的分量有多重,我想每一位一线的工程师都深有感触。它不是一个简单的功能描述,而…

2026/7/23 13:24:42
基于FPGA与专用SerDes芯片的3G-SDI高清视频传输方案设计与实践

基于FPGA与专用SerDes芯片的3G-SDI高清视频传输方案设计与实践

1. 项目概述与核心挑战在专业广播、影视制作和高端音视频系统中,高清乃至超高清未压缩视频信号的实时、无损传输是基石。这背后依赖的核心技术,就是串行数字接口(SDI)。从早期的标清(SD-SDI)到如今支持1080…

2026/7/23 13:24:42
扣子智能体性能优化实战:响应速度提升4.8倍、Token消耗降低63%的3层缓存架构(含可复用JSON Schema)

扣子智能体性能优化实战:响应速度提升4.8倍、Token消耗降低63%的3层缓存架构(含可复用JSON Schema)

更多请点击: https://intelliparadigm.com 第一章:扣子智能体性能优化实战:响应速度提升4.8倍、Token消耗降低63%的3层缓存架构(含可复用JSON Schema) 在高并发场景下,扣子(Coze)智…

2026/7/23 13:19:42

月新闻