相信玩过爬虫的朋友都知道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 安装

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

  1. pip install playwright
  2. python -m playwright install

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

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

记录并且生产代码

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

  1. python -m playwright codegen

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

  1. 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 开始使用

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

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

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

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

生成的自动化脚本如下

  1. from playwright import sync_playwright
  2. def run(playwright):
  3. browser = playwright.chromium.launch(headless=False)
  4. context = browser.newContext()
  5. # Open new page
  6. page = context.newPage()
  7. # Go to https://www.baidu.com/
  8. page.goto("https://www.baidu.com/")
  9. # Click input[name="wd"]
  10. page.click("input[name=\"wd\"]")
  11. # Fill input[name="wd"]
  12. page.fill("input[name=\"wd\"]", "")
  13. # Press CapsLock
  14. page.press("input[name=\"wd\"]", "CapsLock")
  15. # Fill input[name="wd"]
  16. page.fill("input[name=\"wd\"]", "腾讯文档")
  17. # Click input[type="submit"]
  18. page.click("input[type=\"submit\"]")
  19. # Click text="-官方网站-支持多人在线编辑Word、Excel..."
  20. # with page.expect_navigation(url="https://docs.qq.com/"):
  21. with page.expect_navigation():
  22. with page.expect_popup() as popup_info:
  23. page.click("text=\"-官方网站-支持多人在线编辑Word、Excel...\"")
  24. page1 = popup_info.value
  25. # Close page
  26. page1.close()
  27. # Close page
  28. page.close()
  29. # ---------------------
  30. context.close()
  31. browser.close()
  32. with sync_playwright() as playwright:
  33. run(playwright)

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

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

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

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

2.3 编写代码

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

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

  1. from playwright import sync_playwright
  2. with sync_playwright() as p:
  3. for browser_type in [p.chromium, p.firefox, p.webkit]:
  4. browser = browser_type.launch()
  5. page = browser.newPage()
  6. page.goto('http://baidu.com/')
  7. page.screenshot(path=f'example-{browser_type.name}.png')
  8. 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. 深度学习炼丹术 —— Taoye不讲码德,又水文了,居然写感知器这么简单的内容

    手撕机器学习系列文章就暂时更新到此吧,目前已经完成了支持向量机SVM.决策树.KNN.贝叶斯.线性回归.Logistic回归,其他算法还请允许Taoye在这里先赊个账,后期有机会有时间再给大家补上. ...

  2. sqli-labs 18-19 --Header_injection

    sqli-labs 18 知识点 头部注入 报错注入 使用的函数: updatexml (XML_document, XPath_string, new_value); 第一个参数:XML_docum ...

  3. Python批量创建word文档(1)- 纯文字

    Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...

  4. 关于Git的一些常规操作

    最近刚换了新的办公电脑,Git有重新安装了一遍,很多步骤久了不操作就忘了,又是好一顿折腾,于是这次就顺便记下来了. 不错的Git教程: https://www.liaoxuefeng.com/wiki ...

  5. Telegraf+Influxdb+Grafana自动化运维监控

    概述:Telegraf收集信息,influxdb时序数据库存储数据,grafana平台展示数据,并进行监控告警,组成一个自动化运维监控平台. 一.influxdb ​ InfluxDB是一个由Infl ...

  6. 安利一个基于Spring Cloud 的面试刷题系统。面试、毕设、项目经验一网打尽

    推荐: 接近100K star 的Java学习/面试指南 Github 95k+点赞的Java面试/学习手册.pdf 今天给小伙伴们推荐一个朋友开源的面试刷题系统. 这篇文章我会从系统架构设计层面详解 ...

  7. java使用map去重复

    public class Test { public static void main(String[] args) { Map<Number, String> map1 = new Ha ...

  8. 一次失败的java Box居中尝试

    效果如下: 通过Box的应该虽然实现了居中,但是页面相当丑!且不能插入JTextField等文本框,总的来说相当失败!!! import javax.swing.Box; import javax.s ...

  9. HTML颜色

  10. TCP超时重传时间的选择

    一---导读 TCP超时重传时间的选择是计算机网络中较复杂的问题之一,但幸好前辈们都把路铺好了,我们只需要学习并且遵循这些规则,有能力的话去进一步改正. 二---必知的一些专业术语 A--RTT( r ...