免写代码、自动录制、跨浏览器神器( Selenium )
微软开源神器Playwright —— 真正的 Python 自动化利器免写代码版1. 安装 Playwright 库 (需要 Python 3.7)2. 安装浏览器驱动文件 (Chromium, Firefox, WebKit)注意此步骤下载文件较大过程可能稍慢大家好我是 V保持哥。玩过爬虫的朋友对 Selenium 一定不陌生它是自动化测试的神器也是爬虫遇到瓶颈时的“救火队员”。虽然 Selenium 文档完备但学习成本依然存在对纯小白来说有一定门槛。最近微软开源了一个名为 playwright-python 的项目简直“碉堡了”它不仅是一个强大的自动化库更厉害的是它支持录制功能——连代码都不用写手动操作一遍它就能自动生成 Python 脚本。下面带大家一探究竟。什么是 PlaywrightPlaywright 是一个强大的 Python 库仅用一个 API 即可自动执行 Chromium、Firefox、WebKit 等主流浏览器的自动化操作。 跨浏览器支持 Chromium, Firefox, WebKit。 跨平台支持 Linux, Mac, Windows。⚡️ 极速可靠提供无头模式Headless和有头模式运行速度快且稳定。快速上手指南️ 安装步骤Playwright 的安装非常简单只需两步# 安装playwright库pipinstallplaywright# 安装浏览器驱动文件安装过程稍微有点慢python-mplaywrightinstall1. 安装 Playwright 库 (需要 Python 3.7)pip install playwright2. 安装浏览器驱动文件 (Chromium, Firefox, WebKit)注意此步骤下载文件较大过程可能稍慢python -m playwright install 核心功能代码录制 (Codegen)这是 Playwright 最“黑科技”的功能。你不需要手写代码只需像平时一样操作浏览器它会自动将你的点击、输入转化为代码。录制命令# 基础命令python-mplaywright codegen# 指定目标语言、输出文件和浏览器并打开指定网址python-mplaywright codegen--targetpython-omy.py-bchromium https://www.baidu.com参数说明-o 将录制的脚本保存到指定文件。–target 指定生成脚本的语言javascript, python, python-async, csharp默认为 Python。-b 指定浏览器驱动chromium, firefox, webkit。效果演示执行命令后会自动打开浏览器你在浏览器上的所有操作点击、输入、跳转都会实时翻译成代码。结束后自动关闭浏览器并保存脚本。自动生成的代码示例百度搜索京东fromplaywrightimportsync_playwrightdefrun(playwright):browserplaywright.chromium.launch(headlessFalse)contextbrowser.newContext()# 打开新页面pagecontext.newPage()page.goto(https://www.baidu.com/)# 模拟点击和输入page.click(input[name\wd\])page.fill(input[name\wd\],jingdong)page.click(text\京东\)# 处理弹窗跳转withpage.expect_navigation():withpage.expect_popup()aspopup_info:page.click(//a[normalize-space(.)京东JD.COM官网 多快好省 只为品质生活])page1popup_info.value# 关闭context.close()browser.close()withsync_playwright()asplaywright:run(playwright)进阶API 编程模式除了录制Playwright 也提供了非常优雅的同步和异步 API。⚙️ 同步模式 (Sync)适合简单的脚本编写逻辑直观。示例依次打开三个浏览器访问百度并截图。fromplaywrightimportsync_playwrightwithsync_playwright()asp:forbrowser_typein[p.chromium,p.firefox,p.webkit]:browserbrowser_type.launch()pagebrowser.newPage()page.goto(https://baidu.com/)page.screenshot(pathfexample-{browser_type.name}.png)browser.close()⚡️ 异步模式 (Async)结合 asyncio可大幅提升效率同时控制多个浏览器。importasynciofromplaywrightimportasync_playwrightasyncdefmain():asyncwithasync_playwright()asp:forbrowser_typein[p.chromium,p.firefox,p.webkit]:browserawaitbrowser_type.launch()pageawaitbrowser.newPage()awaitpage.goto(http://baidu.com/)awaitpage.screenshot(pathfexample-{browser_type.name}.png)awaitbrowser.close()asyncio.get_event_loop().run_until_complete(main()) 移动端模拟Playwright 还能模拟移动端设备包括地理位置权限等。示例模拟 iPhone 11 Pro 访问 Google 地图并定位。fromplaywrightimportsync_playwrightwithsync_playwright()asp:# 加载 iPhone 11 Pro 配置iphone_11p.devices[iPhone 11 Pro]browserp.webkit.launch(headlessFalse)contextbrowser.newContext(**iphone_11,localeen-US,geolocation{longitude:12.492507,latitude:41.889938},permissions[geolocation])pagecontext.newPage()page.goto(https://maps.google.com)page.click(textYour location)page.screenshot(pathcolosseum-iphone.png)browser.close()总结Playwright 相比 Selenium 等传统工具优势非常明显不足之处目前生态和中文文档还在完善中相比 Selenium 庞大的社区Playwright 的中文教程相对较少。但随着微软的推广未来可期。项目地址云效- gitcodeup.aliyun.com:691d382079c766a0475d787a/PyCharmMiscProject.git官方文档 Playwright Python Docs欢迎点赞、在看、分享