playwright-python
微软今年初开源了一个自动化项目playwright-python【Github地址】,其官方给的官方文档也简单的介绍了一下这个项目。但是因为正在学习selenium所以怕混淆,就没敢开playwright-python的坑,这会儿正好有时间就简单介绍一下这个playwright-python。
playwright-python提供同步和异步两种模式,我这里主要以同步模式展开写。
适用前提
浏览器方面
:不支持早期版本的Edge和IE11,支持新版本的Edge、Chrome、Firefox、webkit系统方面
:支持Windows、MacOS(需要10.14 (Mojave)或以上版本)、Linux(Ubuntu仅支持18.04和20.04)语言平台方面
:需要Python3.7及以上版本
安装
//安装playwright
pip install playwright
//安装浏览器驱动文件
python -m playwright install
元素定位
playwright支持CSS 选择器、 XPath 选择器、 HTML 属性(如 id、 data-test-id 甚至文本内容)定位元素,并且不需要声明使用的定位方式。
//data-test-id定位
page.click('data-test-id=foo')
//CSS 和 XPath 选择器定位(不指定也可以执行)
page.click('div')
page.click('//html/body/div')
page.click('css=div')
page.click('xpath=//html/body/div')
//文本定位
page.click('text=Hello w')
//不同选择器组合 使用条件1>>条件2,会在符合条件1的元素中检索符合条件2的元素
page.click('#free-month-promo >> text=Sign Up')
操作
页面操作
-
打开新页面
//实例化页面对象 page = context.new_page()
-
前往指定页面
//参数为页面URL page.goto('http://example.com')
-
切换frame
//用 frame 的 name 属性获取 frame frame = page.frame('frame-login') //使用 frame 的 URL 获取 frame frame = page.frame(url 网址=r'.*domain.*' R’. * domain *) //使用属性选择器获取帧 frame_element_handle = page.query_selector('.frame-class') frame = frame_element_handle.content_frame() //与框架互动 frame.fill('#username-input', 'John')
元素操作
-
输入
//第一个参数为定位方式,第二个参数为输入数据 page.fill('#search','query')
-
点击
//参数为定位方式 page.click('#submit')
元素等待
//第一个参数是元素定位,第二个参数是等待状态
page.wait_for_selector('#search', state='attached')
page.wait_for_selector('#details', state='hidden')
page.wait_for_selector('#promo', state='detached')
codegen
playwright的一大卖点就是可以不写一行代码的生成自动化脚本,借助codegen
命令实现,其实在很多自动化工具包括selenium里也有相似的功能。
//打开维基百科页面,开始记录操作
playwright codegen wikipedia.org
//结束操作,以保存cookie和localStorage为脚本
playwright codegen --save-storage=auth.json
//读取保存的认证信息
playwright open --load-storage = auth.json my.web.app
playwright codegen --load-storage=auth.json my.web.app