share-image
ESC

新一代自动化测试神器:Playwright for Python 上手指南

在 Web 自动化测试和爬虫领域,Selenium 统治了很长一段时间。但随着现代 Web 技术的发展,Selenium 的速度和稳定性逐渐成为瓶颈。微软开源的 Playwright 横空出世,支持 Chromium、Firefox 和 WebKit 三大浏览器引擎,并且速度极快,API 设计也非常现代化。

本文将介绍如何在 Python 中使用 Playwright 进行自动化操作。

为什么选择 Playwright?

  1. 跨浏览器支持:一次编写,随处运行(Chromium, Firefox, WebKit)。
  2. 速度快:基于 WebSocket 通信,比 WebDriver 协议更快。
  3. 自动等待:Playwright 会自动等待元素准备好(可见、可点击),告别了手动写 time.sleepWebDriverWait 的痛苦。
  4. 强大的工具链:支持录制脚本(Codegen)、截图、录屏等。

安装

Playwright 的安装非常简单:

pip install playwright
playwright install

playwright install 会自动下载所需的浏览器二进制文件。

快速上手

Playwright 支持同步(Sync)和异步(Async)两种 API。对于简单的脚本,同步 API 足够好用;对于高性能爬虫,推荐使用异步 API。

同步模式示例

from playwright.sync_api import sync_playwright

def run(playwright):
browser = playwright.chromium.launch(headless=False) # headless=False 可以看到浏览器界面
page = browser.new_page()
page.goto("http://whatsmyuseragent.org/")
page.screenshot(path="example.png")
browser.close()

with sync_playwright() as playwright:
run(playwright)

异步模式示例

import asyncio
from playwright.async_api import async_playwright

async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("http://playwright.dev")
print(await page.title())
await browser.close()

asyncio.run(main())

实用技巧:脚本录制

Playwright 提供了一个神器 codegen,可以记录你的浏览器操作并生成代码:

playwright codegen wikipedia.org

运行后会弹出一个浏览器窗口和一个代码窗口,你在浏览器里的操作(点击、输入等)会实时转化为 Python 代码,简直是懒人福音!

总结

Playwright 是目前最推荐的 Web 自动化工具之一。无论是做爬虫还是 UI 测试,它都能提供比 Selenium 更流畅的体验。如果你还在忍受 Selenium 的各种莫名报错,不妨试试 Playwright。

文章作者:阿文
文章链接: https://www.awen.me/post/1594d09e.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2021-05-15 发布,已超过半年(1720天),请注意甄别内容是否已过期。