免写代码、自动录制、跨浏览器神器( Selenium )
·
微软开源神器:Playwright —— 真正的 Python 自动化利器(免写代码版)
大家好,我是 V保持哥。
玩过爬虫的朋友对 Selenium 一定不陌生,它是自动化测试的神器,也是爬虫遇到瓶颈时的“救火队员”。虽然 Selenium 文档完备,但学习成本依然存在,对纯小白来说有一定门槛。
最近,微软开源了一个名为 playwright-python 的项目,简直“碉堡了”!它不仅是一个强大的自动化库,更厉害的是它支持录制功能——连代码都不用写,手动操作一遍,它就能自动生成 Python 脚本。
下面带大家一探究竟。
- 什么是 Playwright?
Playwright 是一个强大的 Python 库,仅用一个 API 即可自动执行 Chromium、Firefox、WebKit 等主流浏览器的自动化操作。
🌍 跨浏览器:支持 Chromium, Firefox, WebKit。
💻 跨平台:支持 Linux, Mac, Windows。
⚡️ 极速可靠:提供无头模式(Headless)和有头模式,运行速度快且稳定。 - 快速上手指南
🛠️ 安装步骤
Playwright 的安装非常简单,只需两步:
# 安装playwright库
pip install playwright
# 安装浏览器驱动文件(安装过程稍微有点慢)
python -m playwright install
1. 安装 Playwright 库 (需要 Python 3.7+)
pip install playwright
2. 安装浏览器驱动文件 (Chromium, Firefox, WebKit)
注意:此步骤下载文件较大,过程可能稍慢
python -m playwright install
🎥 核心功能:代码录制 (Codegen)
这是 Playwright 最“黑科技”的功能。你不需要手写代码,只需像平时一样操作浏览器,它会自动将你的点击、输入转化为代码。
录制命令:
# 基础命令
python -m playwright codegen
# 指定目标语言、输出文件和浏览器,并打开指定网址
python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com
参数说明:
-o :将录制的脚本保存到指定文件。
–target :指定生成脚本的语言(javascript, python, python-async, csharp),默认为 Python。
-b :指定浏览器驱动(chromium, firefox, webkit)。
效果演示:
执行命令后会自动打开浏览器,你在浏览器上的所有操作(点击、输入、跳转)都会实时翻译成代码。结束后自动关闭浏览器并保存脚本。
自动生成的代码示例(百度搜索京东):
from playwright import sync_playwright
def run(playwright):
browser = playwright.chromium.launch(headless=False)
context = browser.newContext()
# 打开新页面
page = context.newPage()
page.goto("https://www.baidu.com/")
# 模拟点击和输入
page.click("input[name=\"wd\"]")
page.fill("input[name=\"wd\"]", "jingdong")
page.click("text=\"京东\"")
# 处理弹窗跳转
with page.expect_navigation():
with page.expect_popup() as popup_info:
page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")
page1 = popup_info.value
# 关闭
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
- 进阶:API 编程模式
除了录制,Playwright 也提供了非常优雅的同步和异步 API。
⚙️ 同步模式 (Sync)
适合简单的脚本编写,逻辑直观。
示例:依次打开三个浏览器,访问百度并截图。
from playwright import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.newPage()
page.goto('https://baidu.com/')
page.screenshot(path=f'example-{browser_type.name}.png')
browser.close()
⚡️ 异步模式 (Async)
结合 asyncio,可大幅提升效率,同时控制多个浏览器。
import asyncio
from playwright import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = await browser_type.launch()
page = await browser.newPage()
await page.goto('http://baidu.com/')
await page.screenshot(path=f'example-{browser_type.name}.png')
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
📱 移动端模拟
Playwright 还能模拟移动端设备,包括地理位置权限等。
示例:模拟 iPhone 11 Pro 访问 Google 地图并定位。
from playwright import sync_playwright
with sync_playwright() as p:
# 加载 iPhone 11 Pro 配置
iphone_11 = p.devices['iPhone 11 Pro']
browser = p.webkit.launch(headless=False)
context = browser.newContext(
**iphone_11,
locale='en-US',
geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
permissions=['geolocation']
)
page = context.newPage()
page.goto('https://maps.google.com')
page.click('text="Your location"')
page.screenshot(path='colosseum-iphone.png')
browser.close()
- 总结
Playwright 相比 Selenium 等传统工具,优势非常明显:

不足之处:
目前生态和中文文档还在完善中,相比 Selenium 庞大的社区,Playwright 的中文教程相对较少。但随着微软的推广,未来可期。
项目地址:云效- git@codeup.aliyun.com:691d382079c766a0475d787a/PyCharmMiscProject.git
官方文档: Playwright Python Docs
欢迎点赞、在看、分享!
更多推荐




所有评论(0)