大家好,我是jobleap.cn的小九。
Playwright 是微软推出的新一代自动化测试/爬虫框架,支持 Chromium、Firefox、WebKit 三大浏览器,提供同步/异步 API,具备自动等待、强大的元素定位、网络拦截等核心能力。本文将从环境搭建到综合实战,全面串联 Playwright 的常用 API,帮助你快速掌握其核心用法。
一、环境搭建
1. 安装 Playwright 核心库
pipinstallplaywright2. 安装浏览器驱动
Playwright 需要对应浏览器的驱动文件,执行以下命令自动安装 Chromium、Firefox、WebKit(也可指定单一浏览器):
# 安装所有浏览器playwrightinstall# 仅安装 Chromium(常用)playwrightinstallchromium3. 验证安装
fromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:browser=p.chromium.launch(headless=False)# 启动有头浏览器page=browser.new_page()page.goto("https://www.baidu.com")print(page.title())# 输出:百度一下,你就知道browser.close()二、核心概念(必懂)
Playwright 的核心层级关系:Playwright→Browser→BrowserContext→Page
- Browser:浏览器实例(对应真实浏览器进程),支持多浏览器(Chromium/Firefox/WebKit)。
- BrowserContext:浏览器上下文(类似隐身窗口),隔离的环境,一个 Browser 可创建多个 Context。
- Page:页面(对应浏览器标签页),一个 Context 可创建多个 Page。
三、常用 API 详解与实战
1. 浏览器启动与配置(Browser API)
核心方法:playwright.chromium.launch()(Firefox/webkit 同理),常用参数:
headless:是否无头模式(默认 True,无界面)。slow_mo:慢动作执行(单位 ms,便于调试)。args:浏览器启动参数(如窗口大小、禁用图片加载)。timeout:启动超时时间(默认 30000 ms)。
fromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:# 启动 Chromium 有头模式,窗口大小 1920x1080,慢动作 500msbrowser=p.chromium.launch(headless=False,slow_mo=500,args=["--window-size=1920,1080","--disable-images"]# 禁用图片加载)# 创建上下文(可配置视口、超时、代理等)context=browser.new_context(viewport={"width":1920,"height":1080},timeout=10000,# 上下文级别超时user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0 Safari/537.36")# 创建页面page=context.new_page()page.goto("https://www.baidu.com")# 关闭资源(建议用 with 上下文自动关闭,此处手动演示)page.close()context.close()browser.close()2. 页面基础操作(Page API)
(1)导航与刷新
goto(url, wait_until):导航到指定 URL,wait_until可选load(页面加载完成)、domcontentloaded(DOM 加载完成)、networkidle(网络空闲)。reload():刷新页面。go_back()/go_forward():前进/后退。
# 导航到百度,等待网络空闲(适合异步加载页面)page.goto("https://www.baidu.com",wait_until="networkidle")# 刷新页面page.reload()# 后退/前进page.go_back()page.go_forward()# 获取页面信息print("页面标题:",page.title())print("页面URL:",page.url)print("页面内容:",page.content())# 获取整个页面 HTML(2)窗口控制
# 设置页面大小page.set_viewport_size({"width":1200,"height":800})# 最大化窗口page.set_viewport_size(page.viewport_size())# 或通过浏览器 args 设置# 截图(整页/元素)page.screenshot(path="full_page.png",full_page=True)# 整页截图page.locator("#su").screenshot(path="button.png")# 元素截图3. 元素定位(核心)
Playwright 推荐语义化定位(优先)+ CSS/XPath 定位,支持 8 种定位方式,优先级从高到低:
| 定位方式 | API 示例 | 适用场景 |
|---|---|---|
| 按角色(Role) | page.get_by_role("button", name="百度一下") | 按钮、输入框等可访问性元素 |
| 按文本 | page.get_by_text("百度一下") | 固定文本的元素 |
| 按标签(Label) | page.get_by_label("搜索") | 输入框的标签 |
| 按占位符 | page.get_by_placeholder("请输入搜索内容") | 输入框占位符 |
| 按 Alt 文本 | page.get_by_alt_text("百度logo") | 图片元素 |
| 按 Title 属性 | page.get_by_title("百度首页") | 带 title 的元素 |
| 按测试 ID | page.get_by_test_id("search-btn") | 自定义># 语义化定位(推荐)search_input=page.get_by_placeholder("请输入搜索内容")# 按占位符search_btn=page.get_by_role("button",name="百度一下")# 按角色+名称# CSS 定位(兼容传统方式)search_input=page.locator("#kw")# ID 选择器search_btn=page.locator(".btn-self")# 类选择器# XPath 定位search_input=page.locator('//input[@id="kw"]')4. 元素交互(Page/Locator API)(1)基础交互
(2)表单操作
5. 等待机制(避免硬等待)Playwright 自带自动等待(操作元素时等待元素可见、可操作),也支持手动等待: (1)显式等待(2)超时配置6. 数据提取(1)元素数据提取(2)录屏(需上下文配置)7. 网络拦截与请求处理Playwright 可拦截、修改、模拟网络请求/响应,适用于爬虫反爬、接口测试。 8. 多标签页/多上下文操作(1)多标签页(2)多上下文(隔离环境)9. 弹窗处理(Alert/Confirm/Prompt)Playwright 可监听并处理浏览器原生弹窗: 四、综合实战:电商商品信息爬取需求:爬取京东“Python编程书籍”第一个商品的名称、价格、评价数,并截图保存。 五、高级技巧与注意事项1. 异步 API(适合高并发)Playwright 支持异步编程,核心替换 2. 反爬规避
3. 测试框架集成Playwright 可与 pytest 集成( 4. 注意事项
六、总结Playwright 凭借自动等待、跨浏览器、强大的定位与网络拦截能力,成为 Python 自动化/爬虫领域的主流工具。本文串联了浏览器启动、页面操作、元素定位、交互、数据提取、网络拦截等核心 API,并通过实战案例验证了用法。掌握这些 API 后,可高效完成网页自动化测试、数据爬取、表单自动提交等场景的开发。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设
2025/12/14 10:28:08
空调加热器MPC模型预测控制程序与修正Kalman滤波:附简洁文献与附图与运行指南空调加热器MPC模型预测控制程序带文献 空调取暖器、室内温度调节模型预测控制、 MPC控制的MATLAB纯M文件,代码约370行,包可运行(需安装MATLAB自带的fmincon相关的优化工具箱)。 基于模型预测控制的温度调节。 包含空调加热模型建模…
网站建设
2025/12/11 20:19:39
Spring Boot日志文件未生成问题排查spring boot中,这是日志配置: # spring 日志管理 logging:# 日志级别level:root: INFO# 日志文件file:name: logs/lims-server.log# 日志滚动策略(防止日志文件过大)logback:rollingpolicy:# 单个文件最大空间max-file-size: 10MB…
网站建设
2025/12/11 20:17:21
2025CRM选型手册:主流CRM品牌客户 - 销售 - 团队管理能力 场景化对比在数字化转型背景下,CRM(客户关系管理)已从“销售工具”升级为“企业增长引擎”。企业对CRM的需求不再局限于“记录客户信息”,而是要求全链路的客户生命周期管理、精细化的销售过程管控、协同化的团队效能提升。本文选取超兔一体…
网站建设
2025/12/11 20:16:30
AI口碑决胜未来:2025年智能洞察与AI市场舆情分析平台深度对决步入2025年,商业世界的竞争法则正被重塑。对于任何一位企业决策者而言,市场不再是熟悉的滩涂,而是一片瞬息万变的深海。信息爆炸如同海啸,裹挟着抖音的爆款视频、小红书的种草笔记、微信公众号的深度评测,将消费者的声…
网站建设
2025/12/11 20:16:07
5分钟掌握Nginx LDAP认证系统部署技巧5分钟掌握Nginx LDAP认证系统部署技巧 【免费下载链接】nginx-ldap-auth Example of LDAP authentication using ngx_http_auth_request_module 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-ldap-auth 在企业级Web应用中,安全身份验证是保护敏感数据…
网站建设
2025/12/14 11:48:10
基于否定选择算法的异常检测技术详解基于否定选择算法(Negative Selection Algorithm, NSA)的异常检测技术详解一、算法基础原理 1. 生物启发机制 免疫耐受过程:模拟T细胞在胸腺中的自体耐受机制,通过删除与自体(正常样本)匹配的候选检测器&am… |