Playwright Python 入门指南:安装、录制脚本与基础使用
最近公司有个要求,登录某几个网站并截图。每周都要截图上交,为了偷点懒,了解到了这个playwright工具。这个工具的录制功能泰裤辣,非常方便省事。几乎不需要写代码就实现了我想要的功能。
简单介绍一下:Playwright 是一款由微软开发的现代化浏览器自动化工具,支持 Chromium、Firefox 和 WebKit 三大浏览器引擎。其 Python 版本凭借简洁的 API 和强大的功能,成为自动化测试和爬虫开发的理想选择。
一、安装 Playwright Python
我是mac版本,直接用命令安装,未遇到问题。
1. 安装 Python 包
通过 pip 安装 Playwright 的 Python 包:
pip install playwright
2. 安装浏览器二进制文件
安装完成后,python版本注意,运行以下命令下载支持的浏览器(Chromium、Firefox、WebKit):
python3 -m playwright install
playwright codegen
二、自动录制脚本:使用 Playwright 提供了一个强大的工具 codegen
,能够通过录制用户操作自动生成 Python 代码,非常适合快速生成测试脚本。
步骤 1:启动录制工具
在终端中运行以下命令,启动浏览器并开始录制:
python3 -m playwright codegen --target python -o 'exanple.py' -b chromium https:www.baidu.com
--target python
:指定生成 Python 代码。-o example.py
:将生成的代码保存到example.py
文件中。
步骤 2:操作浏览器
- 启动后,默认会打开一个 Chromium 浏览器和一个代码生成器窗口。
- 在浏览器中访问目标页面(如
https://www.baidu.com
)。 - 执行操作(如输入文本、点击按钮等),所有操作会被实时转换为代码并显示在右侧窗口中。
步骤 3:保存生成的代码
关闭浏览器后,生成的代码会自动保存到 example.py
文件中。
示例生成的代码可能如下:
import re
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com/")
page.locator("#kw").click()
page.locator("#kw").fill("playwright")
page.get_by_text("playwright自动化工具").click()
with page.expect_popup() as page1_info:
page.get_by_role("link", name="Web自动化测试之playwright:概述").click()
page1 = page1_info.value
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
三、手动编写 Playwright 脚本示例
以下是一个简单的 Playwright Python 脚本,演示如何打开浏览器、搜索内容并截图:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# 启动 Chromium 浏览器(非无头模式)
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# 访问百度并搜索关键词
page.goto("https://www.baidu.com")
page.fill("#kw", "Playwright 自动化测试")
page.click("#su")
# 等待结果加载并截图
page.wait_for_selector(".result-op", state="visible")
page.screenshot(path="search_results.png")
# 关闭浏览器
browser.close()
四、核心功能与场景
1. 自动等待机制
Playwright 自动等待页面元素加载完成,无需手动添加 time.sleep
,提高脚本稳定性:
page.click("#submit") # 自动等待元素可点击后再执行
2. 模拟设备与网络
支持模拟手机设备或网络条件:
from playwright.sync_api import DeviceScaleFactorSelector
# 模拟 iPhone 12
iphone_12 = p.devices["iPhone 12"]
context = browser.new_context(**iphone_12)
3. 处理弹窗与框架
轻松处理弹窗、iframe 和文件下载:
# 监听弹窗
page.on("dialog", lambda dialog: dialog.accept())
# 操作 iframe
frame = page.frame(name="my-iframe")
frame.click("button")
4. 并行测试
通过多浏览器上下文实现并行操作:
context1 = browser.new_context()
context2 = browser.new_context()
page1 = context1.new_page()
page2 = context2.new_page()
五、适用场景
- 自动化测试:快速编写端到端(E2E)测试脚本。
- 爬虫开发:处理动态渲染页面(如单页应用)。
- 自动化操作:批量执行网页操作(如表单提交、数据抓取)。
六、总结
Playwright Python 通过以下特性成为自动化领域的佼佼者:
- 极简安装:一条命令即可安装浏览器和依赖。
- 智能录制:
codegen
工具大幅降低脚本编写难度。 - 跨浏览器支持:轻松覆盖 Chrome、Firefox、Safari。
- 现代化 API:自动等待、网络拦截等功能开箱即用。