selenium的挑战者 - playwright简析
简介playwright支持浏览器端的录制,生成自动化脚本,支持无头跑脚本速度快,基本是selenium的好几倍,且支持浏览器异步运行自动等待API,可拦截请求,随意mock官方API点击搭建环境安装库 pip install playwright安装浏览器 python -m playwright install录制脚本示例命令行输入python -m playwright codegen,会自
简介
今年(2021年)微软开源了一个项目叫「playwright-python」,Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,同时支持以无头模式、有头模式运行。
-
支持浏览器端的录制,生成自动化脚本,支持无头跑脚本
-
速度快,基本是selenium的好几倍,且支持浏览器异步运行
-
自动等待API,可拦截请求,随意mock
官方API
搭建环境
-
安装库
pip install playwright
-
安装浏览器
python -m playwright install
录制脚本示例
命令行输入python -m playwright codegen
,会自动弹出一个浏览器和代码文本框, 在浏览器输入www.baidu.com,然后输入ceshiyixia,结束录制,效果如图:
示例
模拟手机safari浏览器打开谷歌地图,定位到某个地点,然后截图
from playwright.sync_api import sync_playwright
import time
with sync_playwright() as p:
iphone_11 = p.devices['iPhone 11 Pro']
browser = p.webkit.launch(headless=False)
context = browser.new_context(
**iphone_11,
locale='en-US',
geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
permissions=['geolocation']
)
page = context.new_page()
page.goto('https://maps.google.com')
page.click('text="Your location"')
time.sleep(5)
page.screenshot(path='colosseum-iphone.png')
browser.close()
其他
Headless 和 headful: Playwright支持所有平台和浏览器上使用Headless模式和Headful模式。Headful非常适合调试。Headless运行更快,也可以更方便的在CI/云平台上运行。headless默认开启,设置为false,即为 headful模式,可以看到自动化的过程。
对比selenium
简单来说以下几方面playwright有点优势:
-
执行速度 - playwright运行时可以通过设置
Headless
后台直接运行,不用展示过程 -
Actionability - playwright不需要在代码中做等待判断,例如等待下一个页面出现时再点击某个按钮,这在playwright中会自动判断. 而selenium在代码中几乎每个点击都需要手动加入判断,甚至加入延迟时间,延迟时间加多了的话,极大影响执行效率.
-
Selectors - 在playwright中可以直接通过页面文本字符来选择对应元素.
-
Multi-tab & frames
参考
https://www.cnblogs.com/fnng/p/14274960.html
https://www.cnblogs.com/fnng/p/14311181.html
https://www.linkedin.com/pulse/playwright-selenium-next-15-years-mark-percival
更多推荐
所有评论(0)