相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具。写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑。

虽然selenium有完备的文档,但也需要一定的学习成本,对于一个纯小白来讲还是有些门槛的。

同时最近被自动化折磨得非常痛苦,为了实现e2e测试,我们花大量的时间来编写e2e代码,同时此类代码也非常不稳定,经常挂掉,这一点来说是非常的不友好的。作为一个“懒人”,我肯定不愿意花大量的时间在编写测试上,所以就在互联网上找寻一些可以替代的工具来加速我们的效率。所以才有了今天这篇博客。

最近,微软开源了一个项目叫「playwright-python」,简直碉堡了!这个项目是针对Python语言的纯自动化工具,连代码都不用写,就能实现自动化功能。

1.Playwright基本介绍

Playwright is a Python library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright delivers automation that is ever-green, capable, reliable and fast.

Playwright 是一款基于python语言的自动化测试工具,可以通过一个简单的API实现在chromium,Firefox,Webkit浏览器上执行自动化操作,其自动化能力可靠而性能优秀。能够完美适配三大主流浏览器。

2.Playwright使用

2.1 安装

该依赖的安装很简单,命令如下。

pip install playwright
python -m playwright install

第一条是安装playwright依赖,第二条是安装chromium,webkit,firefox的基本依赖。

这里唯一需要注意的是playwright必须要在python 3.7以上才能准确运行

记录并且生产代码

playwright提供了记录用户在浏览器的操作,并生成对应代码的能力。具体的操作命令如下。

python -m playwright codegen

playwright很强大,在命令行键入 --help 可看到所有选项。

python3 -m playwright codegen --help

Usage: index codegen [options] [url]

open page and generate code for user actions

Options:

-o, --output saves the generated script to a file // 输出的文件名称

--target language to use, one of javascript, python, python-async, csharp (default: "python") // 输出的语言

-h, --help display help for command //帮助

Examples:

$ codegen

$ codegen --target=python

$ -b webkit codegen https://example.com

具体含义

-h 展示所有的命令

--target 用什么语言去生成

-o 将脚本保存为一个文件

2.2 开始使用

这里用百度举一个简单的例子

python -m playwright codegen --target python -o 'shortcut.py' -b chromium https://www.baidu.com

下图是通过录制产生的代码,具体录制的视频如下

视频链接如下:https://www.bilibili.com/video/BV1pV411h743/

生成的自动化脚本如下

from playwright import sync_playwright

def run(playwright):
browser = playwright.chromium.launch(headless=False)
context = browser.newContext()
# Open new page
page = context.newPage()
# Go to https://www.baidu.com/
page.goto("https://www.baidu.com/")
# Click input[name="wd"]
page.click("input[name=\"wd\"]")
# Fill input[name="wd"]
page.fill("input[name=\"wd\"]", "")
# Press CapsLock
page.press("input[name=\"wd\"]", "CapsLock")
# Fill input[name="wd"]
page.fill("input[name=\"wd\"]", "腾讯文档")
# Click input[type="submit"]
page.click("input[type=\"submit\"]")
# Click text="-官方网站-支持多人在线编辑Word、Excel..."
# with page.expect_navigation(url="https://docs.qq.com/"):
with page.expect_navigation():
with page.expect_popup() as popup_info:
page.click("text=\"-官方网站-支持多人在线编辑Word、Excel...\"")
page1 = popup_info.value
# Close page
page1.close()
# Close page
page.close()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)

接下来尝试对之前的操作进行重放。

操作重放如下:https://www.bilibili.com/video/BV1WK4y1L7qc/

经过上述操作就完成了一个简单web页面的录制,重放操作。

具体的操作我们可以在https://playwright.dev/上找到详细的doc和api接口文档。

2.3 编写代码

当然playwright也不仅仅是录制代码,可以编写一定的代码。

根据官方的git仓库readme的实例代码,我们实现了一个截图逻辑,大体意思是我们分别通过chrome,firefox,webkit来实现截图操作。

from playwright import sync_playwright

with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.newPage()
page.goto('http://baidu.com/')
page.screenshot(path=f'example-{browser_type.name}.png')
browser.close()

截图结果

3.总结

通过上述文档的描述,我们就可以发现playwright作为自动化测试工具还是有很多优势的。

1.跨浏览器支持:通过官方介绍我们可以得知playwright是全平台兼容的(chrome,firefox,webkit)。

2.跨操作系统支持:其同时支持Linux,Mac,window。

3.提供了代码录制功能:能够录制js,ts,py等代码,大大的提高了我们的效率。

4.可用于移动端使用。

5.同时python作为自动化语言,让前端自动化有了更多的可能,比如说图像对比,文本相似度对比等,python比js拥有更加强大的生态支持。

4.一些探索

我觉得playwright,我们可以在其上面做很多事情,比如根据我们的业务进行二次适配和扩展,让playwright能够完美运行到我们的业务产品上,这一点我觉得是可行的,是容易的。

未来我打算基于playwright的基础上,尝试探索适配我们的业务系统,从而提高我们的自动化编写效率。

5.参考链接

https://playwright.dev/docs/why-playwright playwright

https://github.com/microsoft/playwright-python git仓库

https://blog.csdn.net/yuxiaosmd/article/details/111147119 csdn博客

探索微软开源Python自动化神器Playwright的更多相关文章

  1. 微软开源的Web测试和自动化神器 Playwright

    Playwright 是微软开源的一个用于 Web 测试和自动化的框架, 提供了可靠的端到端测试, 功能非常强大, 可以在测试, 爬虫,自动化场景中使用. 跨浏览器 Playwright 支持所有现代 ...

  2. 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制

    一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...

  3. 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...

  4. 推荐一款最强Python自动化神器!再也不用写代码了!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: seleniu ...

  5. 微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作

    写在前面 今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗? 我的国庆七天 第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺····· 第2-5 ...

  6. 微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  7. 阿里最强 Python 自动化工具开源了!

    1. 前言 大家好,我是安果! 最近,阿里内部开源了一个 iOS 端由 Python 编写的自动化工具,即:tidevice 它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDr ...

  8. 微软开源自动机器学习工具NNI安装与使用

    微软开源自动机器学习工具 – NNI安装与使用   在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...

  9. 【干货】快速部署微软开源GPU管理利器: OpenPAI

    [干货]快速部署微软开源GPU管理利器: OpenPAI 介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力.除此之外,还要压榨出硬件的所有潜力来加快模型训练.OpenPAI作为 ...

随机推荐

  1. robotframework中的参数展开

    robot调用关键字传参的方式是用分隔符分开不同参数,如 keyword arg1 arg2 arg3 arg4 当参数中传入了使用@符号的列表变量时,@符号会将列表展开: @{list1}= Cre ...

  2. BERT 论文阅读笔记

    BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...

  3. (一)必须掌握的linux命令行快捷键

    1.序 使用linux时,接触最多的莫过于命令行,参差不齐,形形色色,对于短的命令行使用脑残的上下左右,back,del就够用了:而对于带有很多参数的长的命令行,再使用上下左右,del,back显得那 ...

  4. Kafka超详细学习笔记【概念理解,安装配置】

    目录 本篇要点 Kafka介绍 作为流处理平台的三种特性 主要应用 四个核心API 基本术语 快速开始 安装配置Zookeeper 下载kafka 配置文件 Windows的命令 启动Zookeepe ...

  5. 面向切面@Aspect

    package com.imooc.demo.filter; import org.springframework.core.Ordered; import org.springframework.c ...

  6. python保存二维列表到txt文件,读取txt文件里面的数据转化为二维列表

    源码: # 读文件里面的数据转化为二维列表 def Read_list(filename): file1 = open(filename+".txt", "r" ...

  7. cmd命令符大全

    cmd命令大全(第一部分) winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更 ...

  8. 负载均衡各个算法JAVA诠释版

    00 前言 首先给大家介绍下什么是负载均衡(来自百科) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备和 服务器的带宽.增加 吞吐量.加强网络数据处理能力.提高网络的灵活 ...

  9. 图像处理 jpg png gif svg

    jpg 图像格式 高压缩的,除了文字,线条外,用jpg 处理 GIF 图像格式 高压缩的,动图  PNG 图像格式 PNG是一种可携式网络图像格式.PNG一开始便结合GIF及JPG两家之长,打算一举取 ...

  10. Oracle 模糊查询 优化

    模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段  like '%关键字%'   字段包含"关键字"的记录   即使在目标字段建立索引也不会走索引,速度最慢 (2 ...