摘要:在 Web 自动化领域,Selenium 曾经的霸主地位已成历史,Playwright 凭其'快、稳、强'的现代特性成为了新标准。而在 2026 年,随着 LLM(大语言模型)和视觉多模态模型的爆发,自动化测试与 RPA(机器人流程自动化)迎来了范式革命。本文将深度解析 Playwright 的核心架构,并手把手教你构建一个具备'自愈能力'的 AI 驱动自动化 Agent。
1. 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 的噩梦。
2. Playwright 核心实战:不仅仅是点点点
2.1 异步与并发的最佳实践
在 Python 中,建议使用 async_playwright 来最大化性能。
import asyncio
from playwright.async_api import async_playwright
async def run():
async with async_playwright() as p:
# 启动浏览器(headless=False 可以看见界面)
browser = await p.chromium.launch(headless=False)
# 创建上下文(相当于隐身模式窗口)
context = await browser.new_context(
viewport={'width': 1920, 'height': 1080},
user_agent=
)
page = context.new_page()
page.goto()
page.click()
page.click()
page.fill(, )
page.screenshot(path=)
browser.close()
asyncio.run(run())


