【实测】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中,也要把这几个关闭放在恰当的位置来让多个用例进行正常执行。尤其是在并发串联混合异步的模式下使用,这三个关闭更应该注意,后面我们会单独写一篇文章来测试三个关闭的具体效果和原理。

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

相关文章
|
测试技术 Python
Playwright系列(4):录制测试脚本
Playwright系列(4):录制测试脚本
728 0
|
4月前
|
机器学习/深度学习 人工智能 前端开发
如何更科学、方向可控的实现 Skill 的“自进化”?
本文深度解析Agent Skill自进化的三大前沿方案:Trace2Skill(归纳聚合)、EvoSkill(自验证选择)和SkillOpt(类模型训练)。三者分别从群体经验提炼、闭环验证筛选、参数化优化视角,解决单轨迹偏差、质量不稳、冗余低效等痛点,推动Skill构建从“人工调试”迈向“科学工程”。
1257 0
|
11月前
|
缓存 Java Spring
JDK-CGLIB-反射
JDK动态代理基于接口,利用反射和Proxy实现;CGLIB通过ASM生成子类,支持无接口类代理,但无法代理final方法。二者性能随JDK版本变化,JDK8后差距缩小。Spring AOP根据是否有接口自动选择代理方式。Java反射机制则允许运行时获取类信息并动态操作对象,是动态代理的基础。
320 0
|
11月前
|
人工智能 JSON API
构建AI智能体:二十、妙笔生花:Gradio集成DashScope Qwen-Image模型实现文生图
本文介绍了一个基于Gradio和阿里云通义千问Qwen-Image模型的文生图应用。该应用通过简洁的Web界面实现文本生成图像功能,支持多种风格(3D卡通、动漫、油画等)和尺寸选择,并包含负面提示词功能。文章详细解析了代码结构,包括API调用封装、参数映射、错误处理等核心功能模块,同时提供了丰富的示例提示词和生成效果展示。该工具适合探索AI图像生成能力,通过调整提示词和参数可优化生成效果。
1400 3
|
Web App开发 人工智能 自然语言处理
利用Playwright MCP与LLM构建复杂的工作流与AI智能体
本文介绍如何通过Playwright MCP与大语言模型(LLM)结合,构建智能AI代理与自动化工作流。Playwright MCP基于Model Context Protocol,打通LLM与浏览器自动化的能力,实现自然语言驱动的网页操作。涵盖环境配置、核心组件、智能任务规划、自适应执行及电商采集、自动化测试等实战应用,助力高效构建鲁棒性强、可扩展的AI自动化系统。
|
存储 人工智能 自然语言处理
AI-Compass GraphRAG技术生态:集成微软GraphRAG、蚂蚁KAG等主流框架,融合知识图谱与大语言模型实现智能检索生成
AI-Compass GraphRAG技术生态:集成微软GraphRAG、蚂蚁KAG等主流框架,融合知识图谱与大语言模型实现智能检索生成
|
机器学习/深度学习 人工智能 搜索推荐
AutoGLM沉思:智谱AI推出首个能"边想边干"的自主智能体!深度研究+多模态交互,颠覆传统AI工作模式
AutoGLM沉思是由智谱AI推出的一款开创性AI智能体,它突破性地将深度研究能力与实际操作能力融为一体,实现了AI从被动响应到主动执行的跨越式发展。
1770 16
AutoGLM沉思:智谱AI推出首个能"边想边干"的自主智能体!深度研究+多模态交互,颠覆传统AI工作模式
|
机器学习/深度学习 Ubuntu 物联网
ubuntu和linux 什么关系?
综上所述,Ubuntu与Linux之间存在着紧密的关系。Ubuntu是基于Linux内核的操作系统发行版之一,它继承了Linux的开源精神,并在此基础上进行了定制和优化,以更好地适应桌面和服务器应用。同时,Ubuntu也受益于Linux社区的支持和贡献,为用户提供了丰富的软件和工具选择。对于想要了解和使用开源操作系统的用户来说,Ubuntu无疑是一个值得推荐的选择。
|
Web App开发 测试技术 API
Python Playwright 基本使用(步骤详细)
Python Playwright 基本使用(步骤详细)
3427 0

热门文章

最新文章