当前位置: 首页 > news >正文

Playwright基础入门篇 (1) | 环境搭建与首个自动化脚本

一、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
  1. 验证安装
    运行以下脚本,成功输出浏览器标题即表示环境就绪:
from playwright.sync_api import sync_playwrightwith 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 testingbrowser.close()

✅ 成功标志:浏览器自动打开并显示 Playwright 官网,控制台打印正确标题 。

三、首个自动化脚本:网页导航与截图
脚本目标
访问 https://example.com,保存全页面截图并输出标题。

from playwright.sync_api import sync_playwrightdef 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 Domainbrowser.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 异步模式选择
image

import asyncio
from playwright.async_api import async_playwrightasync 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())

六、总结与下一步
1 小时成果清单:

✅ 完成跨平台环境搭建
✅ 首个导航+截图脚本
✅ 掌握同步/异步模式选择
✅ 学会使用录制与调试工具
下一步学习:
➡️ 元素定位进阶:文本/CSS/XPath/语义化定位实战
➡️ 框架集成:用 Pytest 管理测试用例
➡️ CI/CD 流水线:GitHub Actions 自动执行测试 。

立即行动:10分钟内生成你的第一个自动化脚本!

引用说明:本文环境搭建步骤参考 Playwright 官方文档及国内开发者实践指南,代码示例经实测验证可稳定运行。

Playwright学习交流群

image

推荐学习

image

行业首个「知识图谱+测试开发」深度整合课程【人工智能测试开发训练营】,赠送智能体工具。提供企业级解决方案,人工智能的管理平台部署,实现智能化测试,落地大模型,实现从传统手工转向用AI和自动化来实现测试,提升效率和质量。

http://www.aitangshan.cn/news/643.html

相关文章:

  • 在K8S中,集群服务暴露失败 如何解决?
  • noip2022
  • noip2023
  • csp2023
  • 酷睿Ultra和i系列有啥区别?怎么选看这几点
  • 在K8S中,pod 状态为 ErrlmagePull 如何解决?
  • 在K8S中,外网无法访问集群提供的服务 如何解决?
  • 2.3 GTK 中的动作(action)概述
  • docker 封装php项目
  • OpenCV入门(17):图像形态学操作
  • M序列 CEVA DSP 实现
  • 各类损失loss
  • 数论 学习笔记
  • [笔记]GGML 或GGUF的14种不同量化模式说明
  • Visual studio 2017安装教程 VS2017(附安装包)
  • Python装饰器底层原理
  • 用 Amazon Q AI 写了个 PHP 缓存库,解决” 若无则获取并回填” 这个老问题
  • 安装mkcert的ip证书
  • 告别外发文件管理乱象:Ftrans B2B为企业筑牢数据安全防线!
  • 转:UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)_uml类图关系
  • 8.12
  • 动态规划题单做题日志
  • 告别传统FTP!国产FTP服务器软件如何实现10倍速升级?
  • 率先对接GPT-5!燕千云AI能力重磅升级,打造企业级全栈大模型服务生态
  • 国产化FPGA-2050-基于JFMK50T4(XC7A50T)的核心板
  • Luogu题解:P13463 [GCJ 2008 #1C] Text Messaging Outrage
  • Prometheus 告警时为何无法获取现场值
  • Luogu题解:P13427 [COCI 2020/2021 #2] Odasiljaci
  • post提交数据到服务器应该使用textarea还是div editable
  • Python 库 DuckDB