【实测】playwright 学习笔记 - 02

简介: 【实测】playwright 学习笔记 - 02

 上节课最后,我终于下载完了playwright的综合驱动。据说,之后再也不用因为用不同的浏览器而去找不同的驱动,还要区分各种版本号闹心了。受到了一致好评....

   上次第一节后收到了超多小伙伴的追更和建议,所以本教程作为弥补市面上其他的流水式官方教程,决定采用测试实践的方案来教学,也就是真实的去执行一些自动化,写自动化脚本,不断的测试出各种知识点(猜测-测试-总结-复测确认)的方法,再结合官网的词典教程,大家不但学起来轻松生动,还印象深刻。

   之前我又去了解了一下playwright,发现了一些新的有用的信息:

  • playwright并非某个小作坊的产品,其实是微软推出的新一代轻量级自动化框架,所以这产品的后续更新,发展和生态建设可以得到保障,大家可以放心无脑学。
  • 从描述上看,playwright对python相当友好,甚至可以说专为python量身定做,而它本身也完全符合python的低门槛快速简单的风格。学python的小伙伴发财了哦~
  • playwright支持录制操作,相比较selenium的录制,这个录制的更靠谱和更简单更稳定等等,但具体效果如何还需要我亲自测试才知道,别看广告看疗效嘛。不过,录制自动化这个领域因为各种垃圾的效果,一直被大佬们所歧视,希望playwright可以一举改掉这个现象。


接下来,我们要体验一下具体的录制效果。测试网站,我的一个小小的宣传页面:woqurefan.cn

按照官网教程为:在cmd或者终端输入命令启动。

python3 -m playwright codegen -o 'test_526.py' -b chromium http://woqurefan.cn/

其中python3 -m playwright codegen为录制命令的固定写法。

-o '文件名' 意思是保存代码成某个文件。

-b 驱动 网址 意思是用什么浏览器打开哪个页面,可以不写网址,自己手动输入也会被记载下来。

执行后效果为,自动打开了一个谷歌浏览器并且进入了网站页面,还同时弹出了一个代码编辑页:

image.png

并且页面自动进入了调试模式,鼠标悬浮任何元素,都可以直接显示该元素的获取定位代码。

当我点击了一下这个按钮之后,神奇的一幕发生了,这个生成的代码编辑框中居然自动添加了这一句代码:

然后我试着又点击了一下面试题进入按钮,不出意外,这句代码又自动生成了:

然后我再随便点击了一道面试题:

可以看到再次生成代码,不过这次的定位是用text文案。关于为什么会使用text文案,而非具体name等属性,请等待咱接下来的文章中会进行具体测试。

我关闭了这个页面后,可以看到刚刚的代码已经保存好了:

用pycharm打开后,我们来好好研究下这个demo脚本。

1行是导入,从这个叫sync_api的模块导入。这个名称读起来是同步接口的意思。这么想来,那么palywright应该还支持异步模式才对。看来我们之后可以再去研究下异步模式。

接着是一个def run函数 和一个主程序代码块with。with代码块只负责去调用run函数。后续如果有什么一开始要进行设置的代码可以尝试放在这个with代码块中,比如并发去调用run函数启动多个浏览器并发测试。

run函数内部,则先定义了一个变量broswer,目的应该是定义驱动和有头模式。这么看来,playwright应该还支持无头模式,并且这行代码可以修改启动不同的驱动。那我们后续如果要做多浏览器并发兼容性测试的时候,就可以从browswer这行着手(大家要经常这样举一反三的去学习和思考哦)

6行是一个context变量声明,并且是依靠browser的某个函数来实现。那么我可以认定context就是browser的一个实例。就好像browser是一张图纸,而context就是按照这个图纸做的一台实际的产品。之后我们要测试一下,如果多个声明的话,那是启动多个浏览器窗口,还是在一个浏览器下的多个标签页。

7行是page变量声明,依靠context的创建,看英文名字起来是新建了一个页面。并且下面的代码都是page.xxxxx ,看起来很像selenium的driver,但此刻我有一些疑惑,driver是可以控制多个页面多个标签页的,而这个page听起来就好像只能在当前标签页进行操作。这点需要我们后续的测试才能知晓。就不提前公布答案了,不然印象不深刻。

8行是页面的跳转,goto函数。

9-11行是具体的定位和操作,形式和selenium如出一辙。目前学到的两个方法:get_by_role("tag名",name="")    get_by_text("具体文案")   操作上学到了一种:.click() 单击。

12行是关闭页面

15行是关闭context实例

16行是关闭浏览器实例

以上三个关闭看起来比较麻烦。我们实际工作中要根据需要来选择关闭到何种程度,在pytest或者unitest中,也要把这几个关闭放在恰当的位置来让多个用例进行正常执行。尤其是在并发串联混合异步的模式下使用,这三个关闭更应该注意,后面我们会单独写一篇文章来测试三个关闭的具体效果和原理。

好,今天的课程到此为止,各位不用自己去尝试了,看这一个教程足够了。

相关文章
|
Java Apache
Apache PDFbox快速开发指南
一、介绍 Apache PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。
2280 0
|
机器学习/深度学习 算法 存储
一文读懂大规模图神经网络平台AliGraph
2019阿里云峰会·上海开发者大会于7月24日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货, 共同探讨前沿科技趋势。本文整理自开源大数据专场中阿里巴巴资深技术专家李永先生的精彩演讲,将为大家分享AliGraph:大规模图神经网络平台。
8768 0
|
2月前
|
JavaScript 测试技术 API
Playwright自动化测试系列(3) | 第二阶段:核心技能与调试 ​​交互操作大全
本课程为Playwright自动化测试第三阶段,深入讲解核心交互操作与调试技巧。涵盖基础到高级交互、文件上传下载、疑难问题解决及复杂场景应对,并提供稳定性优化方案,帮助开发者高效构建健壮的自动化测试脚本。
|
30天前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
10月前
|
存储 Shell Linux
用户和用户组
本文介绍了Linux系统中的用户账户和组的基本概念,包括普通用户和超级用户(root)的定义和区别,以及组的概念和作用。文章还详细描述了用户账户和组的相关文件(如/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow)的结构和内容,并提供了创建和删除用户账户及组的基本命令和选项。
506 2
|
9月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
263 31
Selenium IDE:Web自动化测试的得力助手
|
12月前
|
机器学习/深度学习 存储 算法
Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著
Optuna,广受欢迎的超参数优化框架,近日发布了其第四个主要版本。自2018年问世以来,Optuna迅速成为机器学习领域的关键工具,目前拥有10,000+ GitHub星标、每月300万+下载量、16,000+代码库使用、5,000+论文引用及18,000+ Kaggle使用。Optuna 4.0引入了OptunaHub平台,支持功能共享;正式推出Artifact Store管理生成文件;稳定支持NFS的JournalStorage实现分布式优化;显著加速多目标TPESampler,并引入新Terminator算法。
508 9
Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
算法
递归函数实现素数判断
该文介绍了素数判断的递归实现,尽管递归算法在判断素数上并不高效,时间复杂度和空间复杂度均为O(N),但作为学习和理解递归的一种方式,仍有其价值。文章强调在实际应用中应选择更高效的方法。递归思路基于试除法,对于大于1的整数,如果只能被1和自身整除,则为素数。递归函数通过不断试除2到根号下该数之间的数来判断,同时注意到偶数不是素数。文中给出了非递归和递归的试除法代码示例。
261 2