Playwright快速上手-1

 

前言

    随着近年来对UI自动化测试的要求越来越高,,功能强大的测试框架也不断的涌现。本系列主讲的Playwright作为一款新兴的端到端测试框架,凭借其独特优势,正在逐渐成为测试工程师的热门选择。

本系列文章将着重通过示例讲解

  1. Playwright + python开发环境的搭建    

  2. 定位方式(重点)

  3. Playwright 的重要API(重点)

  4. Playwright 的 其他重要特性

  5. Playwright + Python 自动化框架的搭建 (重点)

希望搭建能通过本系列文章的学习,能通过 Playwright +Python 搭建实用的框架解决工作中的实际问题。

1. Playwright 简介

1.1 Playwright 是什么

     Playwright 是一个用于浏览器自动化和跨浏览器测试的开源工具,由 Microsoft Edge 团队开发。它允许开发者编写代码来模拟用户在不同浏览器中的交互,执行页面操作,处理网络请求,截取屏幕截图,生成 PDF 等,从而有效地进行自动化测试和性能测试。

1.2 为什么要学Playwright

  1. 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化,因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。

  2. 后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三个框架都是基于JavaScript开发的,且都不支持Python,所以使用率并没有很高。

  3. Playwright 则是综合了上述框架的优点,提供了很好的体验,将来可能成为流行的趋势。

1.3 playwright 的特点(优势)

  1. 多浏览器支持:Playwright 支持 Chromium(包括 Chrome 和 Edge)、Firefox 和 WebKit(Safari),这使得您可以在不同浏览器中进行测试,确保您的应用在各个浏览器上都能正常工作。

  2. 速度与稳定性:Playwright被设计为高性能工具,它在执行页面操作和网络请求时非常快速。同时,它还具备稳定性,可以处理各种异步操作和复杂场景。

  3. 功能丰富:Playwright 提供了丰富的 API,可以模拟用户的各种交互,如点击、填写表单、键盘输入等。此外,它还支持录制和回放操作,方便非开发人员使用。

  4. 并行测试:Playwright 允许在多个浏览器实例中并行运行测试,从而加快测试速度。

  5. 跨平台:Playwright 可以在 Windows、macOS 和 Linux 等多个平台上运行。

    ps: 上内容均来自官方文档,想要了解更多关于Playwright 的知识,请参考其官方文档

2.搭建python + Playwright开发环境

2.1

  1. 安装python (版本必须 不小于Python3.7)

  2. 安装Playwright 

    pip install playwright
  3. 安装内置浏览器

    python -m playwright install
  4. 验证是否安装成功, 只要显示对应的版本号,即为安装成功

    playwright -V---Version 1.35.0

2,2 . 入门实战-脚本录制

Playwright 自带的 Playwright Inspector工具 可以像 selenium 和 QTP 一样,录制页面动作,产生脚本,并且能帮您快捷的定位页面元素。

在终端(或命令行窗口)输入一下命令

playwright codegen

系统会打开一个浏览器,另外会打开一个 Playwright Inspector,如下图所示 

图片

在浏览器中的所有操作,都会在在 Playwright Inspector 实时的产生代码,现在就以打开百度,并进行搜索为例,看下Playwright Inspector 所产生的代码。

在浏览器中输入百度网址, 并在搜索栏中输入 米兰, 再在Playwright Inspector 停止录制(默认开启的) 

图片

来看下产生的代码

rom playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:    browser = playwright.chromium.launch(headless=False)    context = browser.new_context()    page = context.new_page()    page.goto(百度网址)    page.locator("#kw").fill("米兰")    page.get_by_role("button", name="百度一下").click()
    # ---------------------    context.close()    browser.close()with sync_playwright() as playwright:    run(playwright)

代码分析

with sync_playwright() as playwright

这一行代码表示用同步的方式生成一个playwright对象, 用 with ... as ... 方式参考处理文件的方式, 可以省略 playwright.stop(),上面的代码 等同于

from playwright.sync_api import sync_playwright
playwright = sync_playwright().start() 
...
...
playwright.stop()

run 函数中的代码就比较明了了

# 启动浏览器
browser = playwright.chromium.launch(headless=False)
# 打开一个新的页面
context = browser.new_context()
page = context.new_page()
# 跳转至 百度
page.goto("百度网址")
# 在搜索框 输入 米兰
page.locator("#kw").fill("米兰")# 点击 百度一下
page.get_by_role("button", name="百度一下").click()

可以看到,Playwright 的定位方式和 selenium 还是有很大的不同的,下一节就将开始介绍其丰富的定位方式!敬请期待!

作者微信,说明来意,不闲聊,不白嫖。

图片

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/36661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux Day07

一、僵死进程 1.1僵死进程产生的原因 子进程先于父进程结束, 而父进程没有获取子进程退出码,释放子进程占用的资源,此时子进程将成为一个僵死进程。 在第一个框这里时父进程子进程都没有结束,显示其pid 父进程是2349,子进程是235…

【Nginx】Nginx网站服务

国外主流还是使用apache;国内现在主流是nginx(并发能力强,相对稳定) nginx:高性能、轻量级的web服务软件 特点: 1.稳定性高(没apache稳); 2.系统资源消耗比较低&#xf…

判断链表有环的证明

目录 1.问题 2.证明 3.代码实现 1.问题 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用…

TansUNet代码理解

首先通过论文中所给的图片了解网络的整体架构: vit_seg_modeling部分 模块引入和定义相关量: # codingutf-8 # __future__ 在老版本的Python代码中兼顾新特性的一种方法 from __future__ import absolute_import from __future__ import division fr…

新基建助推数字经济,CosmosAI率先布局AI超算租赁新纪元

伦敦, 8月14日 - 在英国伦敦隆重的Raffles OWO举办的欧盟数字超算新时代战略合作签约仪式,CosmosAI、Infinite Money Fund与Internet Research Lab三方强强联手,达成了历史性的合作协议,共同迈向超算租赁新纪元。 ​ 这次跨界的合作昭示了全球…

VR家装提升用户信任度,线上体验家装空间感

近些年,VR家装逐渐被各大装修公司引入,VR全景装修的盛行,大大增加了客户“所见即所得”的沉浸式体验感,不再是传统二维平面的看房模式,而是让客户通过视觉、听觉、交互等功能更加真实的体验家装后的效果。 对于传统家装…

BUUCTF 还原大师 1

题目描述: 我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4D…

【Vue3】自动引入插件-`unplugin-auto-import`

Vue3自动引入插件-unplugin-auto-import,不必再手动 import 。 自动导入 api 按需为 Vite, Webpack, Rspack, Rollup 和 esbuild 。支持TypeScript。由unplugin驱动。 插件安装:unplugin-auto-import 配置vite.config.ts(配置完后需要重启…

迪瑞克斯拉算法 — 优化

在上一篇迪瑞克斯拉算法中将功能实现了出来,完成了图集中从源点出发获取所有可达的点的最短距离的收集。 但在代码中getMinDistanceAndUnSelectNode()方法的实现并不简洁,每次获取minNode时,都需要遍历整个Map,时间复杂度太高。这…

HTML详解连载(5)

HTML详解连载(5) 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽行高:设置多行文本的间距属性名属性值行高的测量方法 行高-垂直居中技巧 字体族属性名属性值示例扩展 font 复合属性使用场景复合属性示例注意 文本缩进属性…

UG NX二次开发(C#)-CAM自定义铣加工的出口环境

文章目录 1、前言2、自定义铣削加工操作3、出错原因4、解决方案4.1 MILL_USER的用户参数4.2 采用自定义铣削的方式生成自定义的dll4.2 配置加工的出口环境4.3 调用dll5、结论1、前言 作为一款大型的CAD/CAM软件, UG NX为我们提供了丰富的加工模板,通过加工模板能直接用于生成…

DTC服务(0x14 0x19 0x85)

DTC相关的服务有ReadDTCInformation (19) service,ControlDTCSetting (85) service和ReadDTCInformation (19) service ReadDTCInformation (19) service 该服务允许客户端从车辆内任意一台服务器或一组服务器中读取驻留在服务器中的诊断故障代码( DTC )信息的状态…

Web菜鸟教程 - Radis实现高性能数据库

Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。 也就是说,如果你对性能要求不高,不用Radis也是可以的。不过作为最自己写的程序有高要求的程序员,自然是要学一下的&a…

PHP Mysql查询全部全部返回字符串类型

设置pdo属性 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

08-1_Qt 5.9 C++开发指南_QPainter绘图

文章目录 前言1. QPainter 绘图系统1.1 QPainter 与QPaintDevice1.2 paintEvent事件和绘图区1.3 QPainter 绘图的主要属性 2. QPen的主要功能3. QBrush的主要功能4. 渐变填充5. QPainter 绘制基本图形元件5.1 基本图像元件5.2 QpainterPath的使用 前言 本章所介绍内容基本在《…

chatserver服务器开发笔记

chatserver服务器开发笔记 1 chatserver2 开发环境3 编译 1 chatserver 集群聊天服务器和客户端代码,基于muduo、redis、mysql实现。 学习于https://fixbug.ke.qq.com/ 本人已经挂github:https://github.com/ZixinChen-S/chatserver/tree/main 需要该项…

kubernetes pod 资源限制 探针

资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,代表容器运行所需的最小资源量,调度器就使用该信息来决定将 Pod …

Java课题笔记~ JSP开发模型

MVC 1.JSP演化历史 1. 早期只有servlet,只能使用response输出标签数据,非常麻烦 2. 后来有了jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护&…

计算机网络实验4:HTTP、DNS协议分析

文章目录 1. 主要教学内容2. HTTP协议3. HTTP分析实验【实验目的】【实验原理】【实验内容】【实验思考】 4. HTTP分析实验可能遇到的问题4.1 捕捉不到http报文4.2 百度是使用HTTPS协议进行传输4.3 Wireshark获得数据太多如何筛选4.4 http报文字段含义不清楚General&#xff08…

Git和GitHub

文章目录 1.Git介绍2. 常用命令3. Git分支操作4. Git团队协作机制5. GitHub操作6. IDEA集成Git7.IDEA操作GitHub8. Gitee 1.Git介绍 Git免费的开源的分布式版本控制系统,可以快速高效从小到大的各种项目 Git易于学习,占地面积小,性能快。它…