Python Playwright库详解:从入门到实战

一、项目简介

Playwright是由微软开发的现代化浏览器自动化库,支持通过统一API控制Chromium、Firefox、WebKit三大浏览器引擎。其核心特性包括:

  • 跨浏览器兼容性:一套代码适配所有主流浏览器
  • 自动等待机制:智能等待元素就绪,告别随机失败
  • 强大网络控制:支持请求拦截、模拟和修改
  • 移动设备模拟:内置50+种设备参数,轻松适配移动端
  • 同步/异步双模式:兼顾易用性与执行效率

二、安装部署

2.1 环境要求

  • Python 3.7+
  • Windows/MacOS/Linux系统
  • 推荐使用Pytest作为测试框架

2.2 快速安装

# 安装核心库 pip install playwright # 下载浏览器二进制文件(自动识别系统环境) python -m playwright install# 安装Pytest插件(可选) pip install pytest-playwright 

2.3 验证安装

from playwright.sync_api import sync_playwright with sync_playwright()as p: browser = p.chromium.launch() page = browser.new_page() page.goto("https://playwright.dev")print(page.title())# 应输出 "Playwright" browser.close()

三、核心功能详解

3.1 基础操作流程

from playwright.sync_api import sync_playwright with sync_playwright()as p:# 启动浏览器(有头模式便于调试) browser = p.chromium.launch(headless=False)# 创建新上下文(隔离环境) context = browser.new_context()# 打开页面 page = context.new_page()# 基础操作示例 page.goto("https://baidu.com") page.fill("input[name=wd]","Playwright教程") page.click("text=百度一下")# 截图保存 page.screenshot(path="search_result.png")# 关闭资源 context.close() browser.close()

3.2 元素定位策略

# 文本选择器(推荐) page.click("text=立即购买")# CSS选择器 page.fill(".search-box","关键词")# XPath选择器 page.click('//button[@id="submit"]')# 响应式选择器(自动适配移动端) page.locator("button:visible").click()

3.3 高级功能实现

3.3.1 网络请求拦截
deftest_api_mock():with sync_playwright()as p: browser = p.chromium.launch() page = browser.new_page()# 启用请求拦截 page.route("**/api/data",lambda route: route.fulfill( status=200, json={"message":"Custom Response"})) page.goto("https://example.com")assert page.locator(".data-display").text_content()=="Custom Response" browser.close()
3.3.2 移动设备模拟
deftest_mobile_view():with sync_playwright()as p: iphone = p.devices['iPhone 12'] browser = p.chromium.launch()# 创建移动设备上下文 context = browser.new_context(**iphone, locale='zh-CN', timezone_id='Asia/Shanghai') page = context.new_page() page.goto("https://m.taobao.com") page.screenshot(path="mobile_view.png") context.close() browser.close()
3.3.3 异步执行模式
import asyncio from playwright.async_api import async_playwright asyncdefmain():asyncwith async_playwright()as p: browser =await p.chromium.launch() page =await browser.new_page()await page.goto("https://example.com")await browser.close() asyncio.run(main())

四、最佳实践

4.1 测试组织策略

# pytest_playwright示例import pytest @pytest.fixture(scope="function")defbrowser(): pw = sync_playwright().start() browser = pw.chromium.launch()yield browser browser.close()deftest_search(browser): page = browser.new_page() page.goto("https://bing.com") page.fill("input[name=q]","Playwright最佳实践") page.click("text=搜索")assert"Playwright最佳实践"in page.content()

4.2 调试技巧

# 日志记录配置import logging logging.basicConfig( level=logging.DEBUG,format='%(asctime)s - %(levelname)s - %(message)s')# 截图辅助调试try: page.click("#submit")except Exception as e: page.screenshot(path="error_debug.png")raise e 

4.3 性能优化

# 并行执行配置(pytest.ini)[pytest] addopts =-n auto # 资源复用deftest_parallel():with sync_playwright()as p: contexts =[]for _ inrange(10): contexts.append(p.chromium.launch().new_context())# 并行执行测试...

五、常见问题解决

Q1: 安装时提示"Permission denied"
A: 使用以下命令修复权限:

sudochown -R $USER ~/.cache/playwright 

Q2: 元素定位失败
A: 尝试以下方法:

# 增加等待时间 page.wait_for_selector(".target-element")# 使用更鲁棒的选择器 page.locator("text=立即购买 >> nth=0").click()

Q3: 如何处理登录认证
A: 使用存储状态功能:

context = browser.new_context( storage_state="auth_state.json")# 或手动输入凭证 page.fill("#username","admin") page.fill("#password","123456") page.click("#login")

六、总结

Playwright通过其现代化的设计和丰富的功能集,已成为Web自动化领域的首选工具。其核心优势体现在:

  • 跨浏览器一致性:统一API适配所有主流浏览器
  • 开发效率:自动等待和智能定位减少80%的调试时间
  • 测试可靠性:内置网络模拟和移动适配能力
  • 生态完善:与Pytest等框架无缝集成

建议开发者从基础操作入手,逐步掌握网络拦截、设备模拟等高级功能,结合项目需求构建完整的自动化测试体系。

七、附录

  • 官方文档:https://playwright.dev/python
  • 设备参数表:https://playwright.dev/python/api/class-devices
  • GitHub仓库:https://github.com/microsoft/playwright-python
  • 交流社区:https://gitter.im/microsoft/playwright

Read more

Python保姆级下载安装教程-->Windows版本

Python保姆级下载安装教程-->Windows版本

Windows版本保姆级下载安装 一、下载Python  1、点击下载官网地址 Python官方网站地址https://www.python.org/downloads/ 2、官网页面如下: 3、点击下载界面: 上面最新的版本是3.14.2版本,一般来说新版较之老版优化了一些内容且版本向下兼容,但是不建议下载最新版本,因为python在很多地方使用时没有更新到最新版本,向下兼容性并不好,但也不要太低版本的,很多不适用。 点击Downloads,选择适合自己电脑系统的版本,我的电脑是Windows系统,就选择了Windows,点击后会跳转到另一个页面 【Stable Releases】:稳定发布版本,是官方完成全面测试、修复已知 Bug 的成熟版本,运行稳定、风险低,无论入门学习还是机器视觉项目开发,都优先选这个版本; 【Pre-releases】:预发布版本,属于测试阶段的 “体验版”,可能包含新功能但存在未修复的 Bug,稳定性差,小白或做实际项目(如机器视觉开发)千万别选,易出现代码报错、

By Ne0inhk
2026年 Java 面试八股文总结(完整版)

2026年 Java 面试八股文总结(完整版)

1、Java中有几种类型的流    难度系数:⭐ 2、请写出你最常见的5个RuntimeException    难度系数:⭐ 1. java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象。 1. java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序试图通过字符串来加载某个类时可能引发异常。 1. java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型数据中包含非数字型字符。 1. java.lang.IndexOutOfBoundsException 数组角标越界异常,常见于操作数组对象时发生。 1. java.lang.IllegalArgumentException 方法传递参数错误。 1. java.lang.ClassCastException 数据类型转换异常。 3、谈谈你对反射的理解    难度系数:⭐ 1. 反射

By Ne0inhk
【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南

【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创📩!欢迎评论区留言交流🌟 个人主页 👉 ZyyOvO 本文专栏➡️Python 算法研究所 快速复习👉【Python 速览 】 —— 课前甜点,打开你的味蕾 课前导入 我们知道数学中的函数,我们输入一个数,在通过对应的映射关系得到另一个数,如下图给出了两个简单的数学函数: 什么是函数 那在Python编程中函数是什么呢? 在编程中,函数(Function) 是一段被命名、可重复使用的代码块,用于执行特定任务,它通过接收输入(参数),处理逻辑,并返回输出(结果),将复杂的程序拆分为模块化的组件,让代码更简洁、高效且易于维护。 函数的优势 在 Python 中,函数是编程的核心工具之一,它通过将代码逻辑封装为可重复使用的模块,显著提升了代码的可维护性、复用性和可读性。 避免代码重复:DRY

By Ne0inhk
Python——Windows11环境安装配置Python 3.12.5

Python——Windows11环境安装配置Python 3.12.5

目录 * 一、下载Python * 二、下载Python步骤 * 三、安装Python * 四、验证Python * 4.1、验证Python环境 * 4.2、验证pip * 4.3、更新pip * 4.4、pip镜像源切换(永久切换,全局生效,清华镜像源和阿里云镜像源二选一即可) * 4.4.1、清华镜像源 * 4.4.2、阿里云镜像源 * 4.5、安装依赖包(检验是否成功) * 五、配置环境变量(可选) 一、下载Python 或者百度网盘下载 链接: https://pan.baidu.com/s/1Rc8g1mZrfDtOexev2JK7NA?pwd=

By Ne0inhk