摘要:在 Web 自动化领域,Selenium 曾经的霸主地位已成历史,Playwright 凭其'快、稳、强'的现代特性成为了新标准。而在 2026 年,随着 LLM(大语言模型)和视觉多模态模型的爆发,自动化测试与 RPA(机器人流程自动化)迎来了范式革命。本文将深度解析 Playwright 的核心架构,并手把手教你构建一个具备'自愈能力'的 AI 驱动自动化 Agent。
第一章:Selenium 已死,Playwright 当立?
1.1 自动化的'不可能三角'
长期以来,Web 自动化工程师都在速度、稳定性和抗检测性之间做取舍:
- Selenium: 标准兼容好,但太慢,经常出现
ElementNotInteractableException。 - Puppeteer: 快,但原生只支持 Chrome,Python 生态支持一般。
- Cypress: 开发者体验好,但局限于浏览器内部,无法跨 Tab 操作。
Playwright 的出现打破了这个僵局。作为微软开源的神器,它基于 CDP (Chrome DevTools Protocol) 但又不仅限于此,提供了跨浏览器(Chromium, Firefox, WebKit)的统一 API。
1.2 为什么是 Playwright?
- 自动等待(Auto-waiting):告别
time.sleep()。Playwright 会自动等待元素显式、可点击后再执行操作。 - 网络拦截(Network Interception):原生支持修改请求和响应,做 Mock 测试极为方便。
- 浏览器上下文(Browser Context):一个浏览器实例通过'沙箱'隔离,可以毫秒级创建上百个独立的'账号环境',并发测试神器。
- Shadow DOM 穿透:原生的 CSS 选择器即可穿透 Shadow DOM,这是 Selenium 的噩梦。
Playwright Script
(Playwright 脚本)
Browser Server
(浏览器服务)
Context 1 (Profile A)
(上下文 1 - 配置文件 A)
Context 2 (Profile B)
(上下文 2 - 配置文件 B)
Page 1
(页面 1)
Page 2
(页面 2)
Page 1
(页面 1)
第二章:Playwright 核心实战:不仅仅是点点点
2.1 异步与并发的最佳实践
在 Python 中,建议使用 async_playwright 来最大化性能。
import asyncio
from playwright.async_api import async_playwright
async def run():
async_playwright() p:
browser = p.chromium.launch(headless=)
context = browser.new_context(
viewport={: , : },
user_agent=
)
page = context.new_page()
page.goto()
page.click()
page.click()
page.fill(, )
page.screenshot(path=)
browser.close()
asyncio.run(run())

