最近逛G网,发现微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。

Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,连代码都不用写,就能实现自动化功能。

虽然测试工具 selenium 具有完备的文档,但是其学习成本让一众小白们望而却步,对比之下 playwright-python 简直是小白们的神器。

Playwright真的适用于Python吗?答案是肯定的,微软对于适用于Python的Playwright已准备就绪。可能会发生API重大更改。但大概率是这种情况不会发生,微软还表示仅在他们知道它可以改善您使用新库的体验时,才会可能这样做。

不过微软也提醒尚不支持特定于供应商的API的某些极端情况,例如收集Chromium跟踪,覆盖率报告等。

1、Playwright介绍

Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。

Playwright提供的自动化技术是绿色的、功能强大、可靠且快速,支持Linux、Mac以及Windows操作系统。

还有朋友这么夸:这个项目作为针对 Python 语言纯自动化的工具,解放了代码,实现了自动化功能,我们来看看怎么用它吧。

2、Playwright使用

安装

Playwright的安装非常简单,两步解决。

安装playwright库pip install playwright安装浏览器驱动文件(安装过程稍微有点慢)python -m playwright install

上面两个pip操作分别安装:

  • 安装Playwright依赖库,需要Python3.7+

  • 安装Chromium、Firefox、WebKit等浏览器的驱动文件

录制

使用Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

下面就是录制的命令codegen,仅仅一行。

命令行键入 --help 可看到所有选项python -m playwright codegen

codegen的用法可以使用--help查看,如果简单使用就是直接在命令后面加上url链接,如果有其他需要可以添加options。​​​​​​​

python -m playwright codegen --helpUsage: index codegen [options] [url]
open page and generate code for user actions
Options:  -o, --output <file name>  saves the generated script to a file  --target <language>       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

options含义:

  • -o:将录制的脚本保存到一个文件

  • --target:规定生成脚本的语言,有JS和Python两种,默认为Python

  • -b:指定浏览器驱动

比如,我要在baidu.com搜索,用chromium驱动,将结果保存为my.py的python文件。

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

命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被自动翻译成代码,如下所示。

结束后自动关闭浏览器,保存生成的自动化脚本到py文件。​​​​​​​

from playwright import sync_playwright
def run(playwright):browser = playwright.chromium.launch(headless=False)context = browser.newContext()# Open new pagepage = context.newPage()
page.goto("https://www.baidu.com/")
page.click("input[name="wd"]")
page.fill("input[name="wd"]", "jingdong")
page.click("text="京东"")# Click //a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']with page.expect_navigation():    with page.expect_popup() as popup_info:        page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")    page1 = popup_info.value# ---------------------context.close()browser.close()with sync_playwright() as playwright:run(playwright

此外,playwright还提供了同步和异步的API接口,文档如下。

链接:https://microsoft.github.io/playwright-python/index.html

同步

下面示例代码:依次打开三个浏览器,前往baidu搜索,截图后退出。​​​​​​​

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

异步

异步操作可结合asyncio同时进行三个浏览器操作。​​​​​​​

import asynciofrom playwright import async_playwrightasync def main():async with async_playwright() as p:    for browser_type in [p.chromium, p.firefox, p.webkit]:        browser = await browser_type.launch()        page = await browser.newPage()        await page.goto('http://baidu.com/')        await page.screenshot(path=f'example-{browser_type.name}.png')        await browser.close()        asyncio.get_event_loop().run_until_complete(main())

移动端

更厉害的是,playwright还可支持移动端的浏览器模拟。下面是官方文档提供的一段代码,模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器,首先导航到maps.google.com,然后执行定位并截图。​​​​​​​

from playwright import sync_playwrightwith sync_playwright() as p:iphone_11 = p.devices['iPhone 11 Pro']browser = p.webkit.launch(headless=False)context = browser.newContext(    **iphone_11,    locale='en-US',    geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },    permissions=['geolocation'])page = context.newPage()page.goto('https://maps.google.com')page.click('text="Your location"')page.screenshot(path='colosseum-iphone.png')browser.close()

另外,还可以配合pytest插件一起使用,感兴趣可以自己试一下。

3、总结

playwright相比已有的自动化测试工具有很多优势,其中有:

支持所有浏览器的

  • 在Chromium,Firefox和WebKit上进行测试。Playwright拥有适用于所有现代浏览器的完整API覆盖,包括Google Chrome和Microsoft Edge(带有Chromium),Apple Safari(带有WebKit)和Mozilla Firefox。

  • 跨平台的WebKit测试。使用Playwright,使用适用于Windows,Linux和macOS的WebKit构建,测试您的应用程序在Apple Safari中的行为。在本地和CI上进行测试。

  • 测试手机。使用设备仿真在移动Web浏览器中测试您的自适应Web应用程序。

  • 无报文头与有报文头。Playwright支持所有浏览器和所有平台的无头(无浏览器UI)和有头(有浏览器UI)模式。有报文头模式适用于调试,而无报文头适用于CI / cloud执行。

拥有快速可靠的执行

  • 自动等待APIs。Playwright交互会自动等待直到元素准备就绪。这样可以提高可靠性并简化测试编写流程。

  • 无超时自动化。Playwright会接收浏览器信号,例如网络请求,页面导航和页面加载事件,以消除导致睡眠中断的烦恼。

  • 与浏览器上下文保持并行。对于多个并行孤立的浏览器上下文可执行环境重复使用一个单独的浏览器实例。

  • 弹性元素选择器。Playwright可以依靠面向用户的字符串(例如文本内容和可访问性标签)来选择元素。这些字符串比紧耦合到DOM结构的选择器更具弹性。

拥有强大的自动化功能

  • 多个域,页面和框架。Playwright是一种进程外自动化驱动程序,不受页面内JavaScript执行范围的限制,并且可以自动执行具有多个页面的方案。

  • 强大的网络控制。Playwright引入上下文范围的网络拦截以便进行终止或者模拟网络请求。

  • 现代网络功能。Playwright通过插入的选择器,地理位置,权限,Web Worker和其他现代Web API支持Web组件。

  • 涵盖所有场景的能力。支持文件下载和上传,进程外iframe,原生输入事件,甚至是深色模式。

但它也有局限性

  • 旧版Edge和IE11支持。Playwright不支持旧版Microsoft Edge或IE11(弃用通知)。支持新的Microsoft Edge(在Chromium上)。

  • Java语言绑定:Playwright API目前无法在Java或Ruby中使用。这是暂时的限制,因为Playwright旨在支持任何语言的绑定。

  • 在真实的移动设备上进行测试:Playwright使用桌面浏览器来模拟移动设备。

虽然有一些局限,但现在playwright 已经更新到了 1.7.0 版本,随着一代代的更新,系统也会更为完善,作为一款小白神器,为大家省了那么多事情,我们相信它的未来会越来越好。

微软出品的Python小白神器,真香相关推荐

  1. 功能极其强大,这8款 Python 机器学习库真香

    大家好,今天给大家分享8款 Python 机器学习库,每一款都值得研究一下,喜欢的小伙伴点赞.收藏 关注.文末提供技术交流群. 推荐文章 有人把吴恩达老师的机器学习和深度学习做成了中文版 上瘾了,最近 ...

  2. 计算营业额python代码_真香还是假香,Python处理分析128张Excel表格竟然不到3秒?| 附案例数据集...

    原标题:真香还是假香,Python处理分析128张Excel表格竟然不到3秒?| 附案例数据集 作者:吹牛Z 本文转自公众号:数据不吹牛 更新完Pandas基础教程,后台有不少旁友留言,想要了解怎么用 ...

  3. 只需三步就能做出可视化大屏的python工具,真香!

    今天我就来给大家介绍一款非常便利的可视化工具--big_screen,直接传入数据即可,有了它,小白也能做数据大屏 相比与Plotly.Matplotlib.Pyecharts等可视化库,或者一些商用 ...

  4. 爱了爱了,三步就能做出可视化大屏的python工具,真香

    经常有朋友问我,想做可视化大屏,但是又嫌代码太长该怎么办? 今天我就来给大家介绍一款非常便利的可视化工具–big_screen,直接传入数据即可,有了它,小白也能做数据大屏 相比与Plotly.Mat ...

  5. 浏览器上写代码,4核8G微软服务器免费用,Codespaces真香

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 一图胜千言 先上图,下面是欣宸在自己的iPad Pro ...

  6. 老用别人的库?今天手把手教你动手写一个Python库,真香!

    引子 学习编程以来,接触过Basic,C/C++,Swift,JavaScript和Python五种语言,其中最爱的当属Python,简洁的语法和丰富的库让我一直沉迷于此,尽管最近实习工作中用的是C+ ...

  7. 牛客优聘,易上手、人才优、双奔赴,招聘神器真香了!

    你是否有以下问题: 只想快速招个人,但产品一堆功能眼花缭乱,花时间精力摸索,实际上用的功能就几个? 人才要求高,但收了一堆质量不高的简历,花大量寻找和筛选成本仅有个别简历通关? 好人才少且总对你爱答不 ...

  8. 真香啊,推荐 6 个 Python 数据分析神器

    用 Python 处理数据大家都不陌生了,属常规操作,但常规之下还是也有些暗藏技巧的. 今天我给大家分享6个好玩高效的操作,帮助大家提高效率.喜欢记得收藏.关注.点赞. 一.Pandas Profil ...

  9. 真香啊,一文讲透金融风控建模全流程(Python)

    信贷风控是数据挖掘算法最成功的应用之一,这在于金融信贷行业的数据量很充足,需求场景清晰及丰富. 信贷风控简单来说就是判断一个人借了钱后面(如下个月的还款日)会不会按期还钱.更专业来说,信贷风控是还款能 ...

  10. 推荐收藏,25条实用简洁的 Python 代码真香啊

    996 一直是互联网老生常谈的话题了,但抛开其他只谈工作本身,你有没有想过,下班晚.加班,有时候可能是因为自己工作比较低效? 大家好,今天周末,整理的25个常用的Python代码段,平时多积累好用.常 ...

最新文章

  1. 2022-2028年中国聚合物气体分离膜行业市场发展模式及投资前景分析报告
  2. 如何向列表中添加数据值(管理员篇)
  3. linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据
  4. 解决ubuntu系统中输入sudo passwd root,之后,提示输入新密码时,输不进去
  5. Nginx —— 用HTTP proxy module配置一个反向代理服务器
  6. Java多线程知识小抄集(三)
  7. 三星Galaxy Note 20系列或将于8月5日发布
  8. 【Flink】Flink 1.9 升级 到 flink 1.12.4 报错 shaded netty4 AbstractChannel AnnotatedConnectException
  9. python selenium 获取元素下的元素个数_Python + Selenium,分分钟搭建 Web 自动化框架!(送自动化测试书籍)...
  10. Mac. IntelliJ IDEA maven+springmvc添加包时小插曲
  11. 变电站计算机监控系统相关技术,变电站计算机监控系统的研究
  12. Apache HTTP服务器 2.0版本文档
  13. VSCode下Pytorch无法自动补全的问题
  14. 中国成为「研究生大国」,99%研究生背后的焦虑:就业更难了!
  15. 汽车软件常用名称缩写
  16. RS485两台设备用了半年,今天突然没数了,并上串口一直时不时有多余FF等乱码输出。单独串口接电脑试都正常,共地就正常了
  17. 2018总结-店铺投资篇
  18. 简单实现一个手持弹幕功能+文字抖动特效
  19. PB控件属性之Tab
  20. VMWare安装Kali Linux(4-3)

热门文章

  1. C语言编程,将26个英文字母大小写输出
  2. 第3章 从零开始的计算机系统
  3. IE8.0的发展历程之一
  4. 姓杨取名:杨姓女孩文雅有寓意的名字,真的是万里挑一
  5. matlab 关于interpreter的使用
  6. linux中脚本都是.sh吗,Linux跑脚本用sh和./有什么区别?
  7. 根据用户输入的Email跳转到相应的邮箱登录页面【蕃薯耀分享】
  8. 十七年未盈利,硅谷最神秘独角兽Palantir的盈利魔咒何时破?
  9. java中级程序员面试题_51CTO下载-JAVA中级程序员面试题
  10. bug的严重程度级别,bug的定义