2021-06-17
技术文档
00

目录

playwright-python
适用前提
安装
元素定位
操作
页面操作
codegen

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及以上版本

安装

shell
//安装playwright pip install playwright //安装浏览器驱动文件 python -m playwright install

元素定位

playwright支持CSS 选择器、 XPath 选择器、 HTML 属性(如 id、 data-test-id 甚至文本内容)定位元素,并且不需要声明使用的定位方式。

python
//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')

操作

页面操作

  1. 打开新页面

    python
    //实例化页面对象 page = context.new_page()
  2. 前往指定页面

    python
    //参数为页面URL page.goto('http://example.com')
  3. 切换frame

    python
    //用 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')

元素操作

  1. 输入

    python
    //第一个参数为定位方式,第二个参数为输入数据 page.fill('#search','query')
  2. 点击

    python
    //参数为定位方式 page.click('#submit')

元素等待

python
//第一个参数是元素定位,第二个参数是等待状态 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里也有相似的功能。

python
//打开维基百科页面,开始记录操作 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

本文作者:Yaki

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!