大家好,我是恶霸程序员!

最近逛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 --help
Usage: 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 page
page = 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_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('https://baidu.com/')page.screenshot(path=f'example-{browser_type.name}.png')browser.close()

异步

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

import asyncio
from playwright import async_playwright
async 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_playwright
with 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. python基础案例教程_Python基础教程 两个经典案例:阶乘和幂
  2. linux统计所有进程总共占用多少内存?
  3. python根据ip获取地理位置_使用python根据ip获取目标地理位置信息
  4. POJ1067 HDU1527 取石子游戏【博弈】
  5. 用”虚短“和”虚断“分析运放电路
  6. 2018年六月前十超级计算机,CPU天梯图2018年6月最新版 六月台式电脑CPU性能排行 (全文)...
  7. 有监督的SAR变化检测公开数据集
  8. 2022年3月15日黑马第三天
  9. 【转载】贵妃醉酒百态(原创)
  10. VM16Pro安装win7
  11. UE_材质_UV计算相关
  12. c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨
  13. 1. 《计算机网络》概述,物理层,数据链路层
  14. Qt Charts 动态实时折线图绘制
  15. Python:30行代码,使用POST登录山大的教务处系统(附完整源码)
  16. 两层全连接神经网络实现手写数字识别
  17. 多线程之死锁介绍及预防
  18. 解决Ubuntu20.04网络配置的问题
  19. Python爬虫小记(2) :抓取全国各省市疫情实时数据 绘制2019-nCoV疫情地图
  20. UVa 11236 - Grocery store

热门文章

  1. vs 应用程序无法正常启动0xc000007b 可能与VS中DLL引用有关
  2. Codeforces Gym 100015F Fighting for Triangles 状压DP
  3. Java实现微信退付款
  4. Let's go to the EX
  5. 幽灵行动:NVIDIA 310M显卡完美超频直逼中高端显卡
  6. iOS视频转码 mov 转 mp4
  7. android ibeacon sdk,如何通过Android上的SDK更改iBeacon参数(UUID,Major,Minor,TxPower)的值...
  8. 什么是无服务器架构,你理解对了吗?
  9. HTML5简单实战--休假申请单
  10. python 随机森林调参_scikit-learn随机森林调参小结