一、Playwright 简介与核心优势
Playwright 是微软开源的现代化 Web 自动化工具,支持 Chromium(Chrome/Edge)、Firefox、WebKit(Safari) 三大浏览器引擎,提供跨平台(Windows/macOS/Linux)和跨语言(Python/JS/Java/C#)的统一 API。其核心优势包括:
-
智能等待机制:自动检测元素可交互性(如点击、输入),减少因网络延迟导致的测试失败
-
录制与调试工具:内置
codegen
实时生成操作脚本,大幅降低学习成本 。 -
真移动端模拟:内置设备描述符(如 iPhone 13),无需额外配置即可模拟手机环境 。
二、环境搭建(10分钟搞定!)
1. 安装 Python 环境(需 3.8+)
# 检查 Python 版本
python --version
# 安装 Playwright 库
pip install playwright
# 安装浏览器驱动(自动下载 Chromium/Firefox/WebKit)
playwright install
避坑提示:国内用户可通过镜像加速下载 :
set PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
playwright install
2. 验证安装
运行以下脚本,成功输出浏览器标题即表示环境就绪:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # 显示浏览器界面
page = browser.new_page()
page.goto("https://playwright.dev")
print("页面标题:", page.title()) # 应输出:Fast and reliable end-to-end testing
browser.close()
✅ 成功标志:浏览器自动打开并显示 Playwright 官网,控制台打印正确标题 。
三、首个自动化脚本:网页导航与截图
脚本目标
访问 https://example.com
,保存全页面截图并输出标题。
from playwright.sync_api import sync_playwright
def run():
with sync_playwright() as p:
# 启动浏览器并访问网页
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://example.com")
# 保存全屏截图(自动等待页面加载完成)
page.screenshot(path="example.png", full_page=True)
print("页面标题:", page.title()) # 输出:Example Domain
browser.close()
if __name__ == "__main__":
run()
效果说明:
-
自动打开浏览器访问
example.com
。 -
生成全页截图
example.png
。 -
控制台输出标题 "Example Domain" 。
四、避坑指南与调试技巧
-
浏览器启动失败:
-
确保已执行
playwright install
安装浏览器内核。 -
若报权限错误,尝试以管理员身份运行终端 。
-
-
截图不完整:
-
添加
full_page=True
参数捕获完整页面。 -
使用
page.wait_for_load_state("networkidle")
确保资源加载完成 。
-
-
调试神器:
-
脚本录制:
playwright codegen https://example.com
操作浏览器自动生成代码,适合快速原型设计 。 - 执行追踪:通过
Trace Viewer
回放操作过程(含网络请求与DOM快照):context = browser.new_context() context.tracing.start(screenshots=True, snapshots=True) # ...执行操作... context.tracing.stop(path="trace.zip") # 查看日志:npx playwright show-trace trace.zip
-
五、同步 vs 异步模式选择
模式 | 适用场景 | 代码示例 |
---|---|---|
同步 | 简单脚本/快速调试 | from playwright.sync_api import ... |
异步 | 高并发任务/爬虫 | await page.goto(...) |
异步示例 (爬虫效率提升3倍+): |
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://example.com")
await page.screenshot(path="async_example.png")
await browser.close()
asyncio.run(main())
学习交流群
推荐阅读
DeepSeek实践指导手册、人工智能在软件测试中的应用、我们是如何测试人工智能的?
在本地部署属于自己的 DeepSeek 模型,搭建AI 应用平台
DeepSeek 大模型与智能体公开课,带你从零开始,掌握 AI 的核心技术,开启智能未来!
深度解析:如何通过DeepSeek优化软件测试开发工作,提升效率与准确度
DeepSeek、文心一言、Kimi、豆包、可灵……谁才是你的最佳AI助手?
DeepSeek与Playwright结合:利用AI提升自动化测试脚本生成与覆盖率优化
DeepSeek大模型6大部署模式解析与探索测试开发技术赋能点
爱测智能化服务平台
测开人必看!0代码+AI驱动,测试效率飙升300% ——霍格沃兹测试开发学社重磅上新「爱测智能化服务平台」限时开放体验!
一码难求的Manus:智能体技术如何重构生产力?测试领域又有哪些新机遇?
开源工具
AppCrawler 开源版
https://github.com/seveniruby/AppCrawler
Hogwarts-Browser-Use 开源版
指导安装贴:hogwarts-browser-use - 开源项目 - 爱测-测试人社区
专业版 (7天免费试用)
自动遍历测试框架 AppCrawler 专业版
通用数据驱动测试框架 hogwarts-ddt 专业版
测试智能体框架 hogwarts-agent 专业版
学社提供的资源
教育官网:霍格沃兹测试开发学社
科技官网:测吧(北京)科技有限公司
火焰杯就业选拔赛:火焰杯就业选拔赛 - 霍格沃兹测试开发学社
火焰杯职业竞赛:火焰杯职业竞赛 - 霍格沃兹测试开发学社
学习路线图:霍格沃兹测试开发学社
公益社区论坛:爱测-测试人社区 - 软件测试开发爱好者的交流社区,交流范围涵盖软件测试、自动化测试、UI测试、接口测试、性能测试、安全测试、测试开发、测试平台、开源测试、测试教程、测试面试题、appium、selenium、jmeter、jenkins
公众号:霍格沃兹测试学院
视频号:霍格沃兹软件测试
ChatGPT体验地址:霍格沃兹测试开发学社
本套视频教程所有配套资料领取方式如下:
方式1:访问官网可下载:testingstudio.com
方式2:关注ceshiren.com社区
人工智能/AI/为什么测试工程师需要掌握AI_哔哩哔哩_bilibili
adb命令:【霍格沃兹测试开发】adb命令零基础快速入门–深入理解掌握app自动化测试底层技术_哔哩哔哩_bilibili
Python语法:1.闭包和装饰器_哔哩哔哩_bilibili?
人工智能:人工智能在音频、视觉、多模态领域的应用_哔哩哔哩_bilibili
软件测试入门:【霍格沃兹测试开发】7小时速成!软件测试新手入门指南,轻松掌握测试技能!_哔哩哔哩_bilibili
测试开发:【霍格沃兹测试开发】面试BAT软件测试开发,你需要具备哪些技能?_哔哩哔哩_bilibili
面试题指导:【霍格沃兹测试开发】软件测试工程师如何拿到P5-P7高薪offer?_哔哩哔哩_bilibili
JMeter:JMeter从入门到精通全集 包含http/dubbo/Kafka压测、Grafana监控_哔哩哔哩_bilibili
Java测试框架:【软件测试】Java测试框架Junit5与Allure测试报告免费课_哔哩哔哩_bilibili
简历面试教程:软件测试工程师简历面试教程攻略–如何写出能进BAT大厂测开岗的优质简历?如何在面试中向HR要到更高薪资?如何拿到更高级别的offer?–持续更新!_哔哩哔哩_bilibili
Java:【软件测试教程】Java自动化测试平台开发入门篇之初识springboot_哔哩哔哩_bilibili?
java语言rest-assured:【霍格沃兹测试开发】java语言rest-assured框架进行接口测试实战_哔哩哔哩_bilibili
Java接口自动化:【软件测试】Java接口自动化测试之RestAssured_哔哩哔哩_bilibili
性能测试:【软件测试教程】高级性能测试-JMeter+InfluxDB+Grafana压测数据展示_哔哩哔哩_bilibili
Linux:Linux 中如何实时查看日志记录-【软件测试面试题】_哔哩哔哩_bilibili
接口测试:【软件测试教程】接口测试入门实战-基于企业微信api进行接口测试_哔哩哔哩_bilibili
APP自动化:【霍格沃兹测试开发】APP移动端自动化测试从入门到精通/Appium环境安装/元素定位与隐式等待(最全攻略)_哔哩哔哩_bilibili
MySQL:【软件测试教程】MySQL数据库基本增删改查与多表查询_哔哩哔哩_bilibili
postman:【软件测试】postman基础-发送post请求_哔哩哔哩_bilibili
性能实战:【软件测试教程】性能测试压测实战-JMeter+InfluxDB+Grafana压测数据展示_哔哩哔哩_bilibili
零基础入门:零基础快速入门软件测试的秘籍_哔哩哔哩_bilibili
Java-JUnit5:软件测试之Java测试框架JUnit5 L1_哔哩哔哩_bilibili
接口测试:【软件测试】App抓包实战练习-接口测试初级入门_哔哩哔哩_bilibili
接口mitmproxy工具:【软件测试教程】测开必备工具mitmproxy_哔哩哔哩_bilibili
pytest:1.pytest简介与安装-【软件测试实战教程】_哔哩哔哩_bilibili
app功能测试:14.app压力测试-【软件测试实战教程】_哔哩哔哩_bilibili
前端开发-vue:Vue生命周期_哔哩哔哩_bilibili
flask:Flask环境安装与配置_哔哩哔哩_bilibili
Appium:appium的基本介绍_哔哩哔哩_bilibili
精品课试听:1.接口测试价值与体系_哔哩哔哩_bilibili
Docker
Docker cp命令详解:在Docker容器和主机之间复制文件/文件夹
Docker Kill/Pause/Unpause命令详细使用指南
Selenium
软件测试/测试开发/全日制|selenium NoSuchDriverException问题解决
软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”