微软出品的Python小白神器,真香!

pytest-playwright基础教程(二)-使用codegen自动生成测试代码 本文介绍了playwright自带的测试步骤记录器的使用方式,在进行简单的功能测试时可以大大节省我们的代码编写,即使不懂代码也能进行测试用例的编写之后我会介绍根据个人需要来修改这些代码进行简单的数据驱动测试,敬请期待(●’◡’●) 阅读详情

转自:SegmentFault  

大家好,我是菜鸟哥!

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

24991ed127f1d4fd0a4fa4125a2251b7.png

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

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

ca2fa3efec199f980c42c41d8035777e.png

结束后自动关闭浏览器,保存生成的自动化脚本到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 版本,随着一代代的更新,系统也会更为完善,作为一款小白神器,为大家省了那么多事情,我们相信它的未来会越来越好。

GitHub链接:https://github.com/microsoft/playwright-python

传送门:https://playwright.dev/ 

开源组织:Microsoft


 

 

 

 

 

 

 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

【Python自学】六个上手超强的学习工具,你值得有 对于初学者来说,Python 是简单易学的编程语言,拥有大量开箱即用的第三方库,当然学习Python最主要的还是要动手,去找一些自己感兴趣的脚本,代码去练习,练的越多,对于一些英语单词,特殊符号要比死记硬背要容易记得些。 下面这六个网站,虽说不上全方位的满足你的需求,但是大部分也都能!可以挑两个你喜欢与适合的上手。 1. PyCharm 下载地址:https://www.jetbrains.com/pycharm/download/ PyCharm 由著名软件开发公司 JetBrains 开发。在涉及人 阅读详情

相关推荐

七大Python效率工具

为了提高效率,我们在平时工作中常会用到一些Python的效率工具,Python作为比较老的编程语言,它可以实现日常工作的各种自动化。为了更便利的开发项目,这里给大家推荐几个Python的效率工具。 1、Pandas-用于数据分析 Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。 #1、安装包 $pipinstallpandas #2、进入python的交互式界面...

JanLEE 863

MATLAB中codegen的使用

目录 codegen从MATLAB代码生成 C/C++ 代码。 语法 说明 示例 从MATLAB函数生成 MEX 函数 从具有多个签名的MATLAB函数生成 MEX 函数 在自定义文件夹中生成 C 静态库文件 生成可执行文件 生成使用可变大小输入的代码 使用全局数据生成代码 生成接受枚举类型输入的代码 生成接受定点输入的静态库 生成接受半精度输入的静态 C++ 库 将浮点MATLAB代码转换为定点 C 代码 将codegen命令转换为等效的MATLABC......

jk_101的博客 4609

10款最佳Python开发工具推荐,每一款都是神器

在人工智能开启的时代,Python作为人工智能的首选语言,前景可以预见。因此学习Python的人越来越多。不过,很多初学Python的小白都一定有过这样的体验,因为没有好用的Python开发工具而吃了很多苦头。工欲善其事必先利其器,这道理只有在实践中才会深有体会。那么初Python用什么工具好?各个开发工具又有哪些特点?本文我就以上的问题,为初学者们介绍一下比较受欢迎且好用的工具。 一、最强终端:Upterm 本来想推荐fish或者zsh,但其实这两个我也主要是贪图自动补全这个特性。最近在用的这个 Upterm 其实很简单好用,它是一个全平台的终端,可以说是终端里的 IDE,有着强大的自动补全

Codegen 使用教程

Codegen 是一个基于 Tree-sitter 的强大的多语言语言服务器,提供了一个脚本化的接口用于代码库的操作。它是一个 Python 库,可以用来操纵代码库,而不需要处理语法树或解析代码。Codegen 通过构建一个完整的图来连接函数、类、导入及其之间的关系,支持静态分析以及引用和依赖关系的自动处理。 ## 2. 项目快速启动 首先,确保你的开发环境满足以下要求: - Python

gitblog_00605的博客 919

薄膜比拟、开口截面扭转承载力以及风电混塔水平缝张开状态下抗扭承载力推导

风电混塔水平缝张开状态下的抗扭承载力推导,从弹性力学说起

George的博客 877

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第二&第三部分

二、使用 MODE 的参数提取和蒙特卡罗 三、最终参数提取

weixin_45719141的博客 1万+

UnityCodeGen 使用教程

UnityCodeGen 使用教程 1. 项目的目录结构及介绍 UnityCodeGen 项目的目录结构如下: UnityCodeGen/ ├── Assets/ ├── Packages/ ├── ProjectSettings/ ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── README_JP.md 目录介绍 ...

gitblog_00572的博客 481

10xGenomics官方可视化工具——Loupe Browser

Loupe Browser是⼀款10xGenomics开发的交互式桌⾯应⽤程序,⽤于探索10x单细胞数据,可以用来找出感兴趣的细胞、找出显著差异表达的基因、鉴定细胞类型、探索细胞亚类和数据共享。

weixin_47195452的博客 3371

CodeGen 开源项目使用教程

CodeGen 开源项目使用教程 1、项目介绍 CodeGen 是一个用于程序合成的开源大型语言模型,由 Salesforce AI Research 开发。该项目旨在通过多轮程序合成技术,生成高质量的代码。CodeGen 模型系列包括多个版本,如 CodeGen1.0 和 CodeGen2.0,分别在不同的时间发布,并具有不同的参数规模和功能特性。 2、项目快速启动 环境准备 在开始之前,请确保...

gitblog_00274的博客 1532

别再只懂开关了!深入FusionCloud 6.1存储防脑裂:SCSI-3锁的挑战模式与实战命令全解析

本文深入解析FusionCloud 6.1存储防脑裂机制,重点介绍SCSI-3 Persistent Reservation的挑战模式与实战命令。通过原理拆解、场景分析和实战案例,帮助架构师掌握虚拟机高可用(HA)环境下的存储锁机制,有效解决数据一致性问题,提升云平台稳定性。

weixin_30567225的博客 423

电源完整性分析:PDN阻抗与去耦电容设计——目标阻抗计算与电容选型深度实战

摘要:随着嵌入式处理器主频突破 GHz、多核架构普及,电源完整性(Power Integrity, PI)已成为高速 PCB 设计中不可忽视的关键环节。本文从 PDN(电源分配网络)阻抗模型出发,系统讲解目标阻抗计算方法、去耦电容选型策略、反谐振抑制技术,并结合 STM32F4 核心板的完整设计实例,提供一套可落地的电源完整性工程实践方案。电源完整性设计是一项系统工程,需要从目标阻抗计算电容选型反谐振抑制PCB 布局目标阻抗是设计的起点,由电源电压、纹波要求和瞬态电流决定去耦电容。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

微软出品的Python神器,真香

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。 Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,连代码都不用写,就能实现自动化功能。 虽然测试工具 selenium 具有完备的文档,但是其学习成本让一众小白们望而却步,对比之下 playwright-python 简直是小白.

大模型教程的博客 506

4、机器人建模、规划与控制及运动学知识解析

本博客深入解析了机器人建模、规划与控制的核心内容,涵盖运动学与动力学的基本原理,并结合典型应用场景探讨了移动机器人与操作器的控制策略。同时,博客还介绍了机器人技术的发展趋势及其在工业和服务领域的广泛应用。

desk3的博客 125

微软出品的Python小白神器,真香

Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,连代码都不用写,就能实现自动化功能。虽然有一些局限,但现在playwright 已经更新到了 1.7.0 版本,随着一代代的更新,系统也会更为完善,作为一款小白神器,为大家省了那么多事情,我们相信它的未来会越来越好。多个域,页面和框架。Playwright通过插入的选择器,地理位置,权限,Web Worker和其他现代Web API支持Web组件。

SixStar_FL的博客 398

YOLOv8实战教程:从模型训练到改进的全流程指南

回顾这段YOLOv8的实战历程,从最初的模型训练到后来的各种改进尝试,我深刻体会到目标检测技术的魅力与挑战。YOLOv8作为一款优秀的框架,不仅易用性强,而且具备很强的可扩展性,让我能在其基础上不断创新。未来,我计划在以下几个方向继续探索:一是将YOLOv8与多模态技术结合,尝试实现图像与文本的联合目标检测;二是深入研究自监督学习在YOLOv8中的应用,减少对标注数据的依赖;三是探索YOLOv8在更广泛场景的部署,如机器人、自动驾驶等。

LXY_LOVE36的博客 283

图机器学习(2)——图的可视化

图结构可通过图形化方式直观呈现。节点通常用圆形表示,边则用连接线表示。然而当节点和边数量增加时,绘制清晰的图形表示可能会变得相当困难,这主要源于节点在二维坐标系中的布局问题。对于包含数百个节点的图,手动指定每个节点的坐标显然不切实际。在本节中,我们将介绍如何在不指定每个节点坐标的情况下绘制图形。我们将利用两种不同的解决方案:networkx 和 Gephi。

盼小辉丶的博客 8870

手把手教你用VSCode打造Python开发环境(从入门到真香)

还在用记事本写Python?每次运行都要切命令行?调试代码全靠print大法?是时候给你的Python开发来次全面升级了!作为全球程序员最爱用的编辑器(没有之一),VSCode配置Python环境真的比你想的简单得多!(而且完全免费!刚开始配置可能会遇到各种问题(我当年差点被环境变量逼疯),但一旦配置完成,你就会发现什么叫"真香警告"!重启VSCode试试更新所有插件到最新版(偷偷告诉你:配置好的环境建议导出设置文件备份,下次换电脑直接导入美滋滋~)

javajenius的博客 1124

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

手把手教你在VSCode中玩转Conda环境(Python开发者必看!)

每次接手新项目都要重新配环境?明明昨天还能运行的代码今天就报错?别慌!(我懂你)今天咱们就来彻底解决这个世纪难题。用Conda+VSCode这对黄金搭档,让你的Python开发体验直接起飞🛫️配置完这套神装后,你会发现:(真香警告⚠️)再也不用担心依赖冲突秒切不同项目环境调试效率提升200%同事看你的眼神都带着崇拜“环境配得好,bug少到老”🎉 现在就动手配置吧,遇到问题欢迎评论区交流!

zhangzelin888的博客 2098

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Windows 包管理革命:winget 如何简化开发者工作流

本文深入探讨了微软官方推出的Windows包管理器winget如何彻底改变开发者的软件安装与管理体验。通过一行命令替代繁琐的搜索下载流程,winget能快速安装、更新和卸载软件,并支持一键搭建和备份开发环境,极大地提升了Windows平台的工作效率和自动化水平,是开发者工作流的革命性工具。

weixin_29237635的博客 370

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CodeGen 项目使用教程

CodeGen 项目使用教程 1. 项目的目录结构及介绍 CodeGen 项目的目录结构如下: CodeGen/ ├── README.md ├── requirements.txt ├── setup.py ├── codegen/ │ ├── __init__.py │ ├── main.py │ ├── config.py │ ├── utils/ │ │ ├── _...

gitblog_00392的博客 468

visual studio code Python终端运行_Python快速入门(一)

引言Python作为一个,目前最火的编程语言之一,已经渗透到了各行各业。它易学好懂,拥有着丰富的库,功能齐全。人生苦短,就用Python。这个快速入门系列分为六篇,包含了Python大部分基础知识,每篇阅读时间不长,且内容含量高。大家最好亲自码一遍代码,这样可以更有收获。概要1、了解和安装编写和运行Python代码利器:VsCode;2、掌握Python的注释功能,从一开始就可以学会规范代码;3、...

weixin_39830205的博客 5264

Python8大究极工具,新手入门的神器!

Theano基于Python擅长处理多维数组(紧密集成了Numpy),属于比较底层的框架,theano起初也是为了深度学习中大规模人工神经网络算法的运算所设计,我们可利用符号化式语言定义想要的结果,接着theano会对我们的程序进行编译,使其高效运行于GPU或CPU,它非常适合深度学习Python。它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,简单的说,它可以大大节省你的编程时间。工欲善其事必先利其器。

python03012的博客 1974

适合 Python 入门的 8 款强大工具,赶紧收藏一波!

Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语法。由于Python相对较小,且拥有各式各样的工具,因此比Java和C++等语言更具优势,同时丰富的库赋予了Python完成各种伟大任务所需的能力。 下面是程序员和学生最常使用的一些Python工具: IDLE 在安装Python时,默认也会安装IDLE。这是最优秀的Python工具之一。它可以降低Python入门的门槛。它的主要功能包括Python Shel

weixin_45820912的博客 295
上一篇: 华为又招天才少年了!简直降维打击!
下一篇: 熊猫书来了!最全的pandas介绍!
菜鸟学Python
博客等级 码龄9年 8089粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值