在上一篇WEB自动化里Selenium:Python Web 自动化绕不开的一把利器,我们提到了Selenium,今天我们来换一种方式用Playwright库来做完成同样的效果。
Playwright是微软推出的新一代浏览器自动化框架。他同样可以控制真实的浏览器,适合多并发,多页面操作,内置更智能的自动等待机制。特别是在写一些电商自动操作、后台系统脚本、自动化、动态页面抓取等,可以用他作为首选方案。
相比于Selenium在下面这些场景里,Playwright 的优势会更加明显
对JS动态渲染页面支持更好
多Tab/多账号操作更方便
可以精确控制时间点(毫秒级)
支持拦截网络请求、监听接口返回
pip install playwrightplaywright install
执行后,要等待一会儿,他会自动下载浏览器内核。
我们用playwright来完成和上一篇文章的例子,来写下代码:
from playwright.sync_api import sync_playwrightwith sync_playwright() as p:# 启动浏览器(关闭 headless 可以看到真实操作)browser = p.chromium.launch(headless=False)context = browser.new_context()page = context.new_page()page.goto("https://www.baidu.com")page.fill("#chat-textarea", "最好看的电影排行")page.keyboard.press("Enter")page.wait_for_timeout(5000)browser.close()
执行程序,你也可以看到和上一个视频一样的效果
对比Selenium的代码,原本需要自己控制等待页面渲染,playwright则是不需要手动写等待逻辑,他会在元素真正可操作时再执行动作,会第一时间触发,非常有效率。这样在一些复杂页面里,稳定性差异会非常明显。这样我们只要专注于写逻辑就行了。在一些页面刷新频繁,按钮状态变化快,操作时机要求高的场景里,他的适应能力更强。
Playwright是目前Python Web自动化领域中,非常值得投入的一款工具。它并不是取代Selenium,而是在Selenium经验之上的一次升级体验。合理使用Playwright,可以显著降低重复劳动成本,提高自动化脚本的稳定性和可维护性。
