自动化神器 Playwright 的 Web 自动化测试解决方案!

news2024/11/17 13:26:01
  1. Playwright认识
3. Playwright环境搭建
  • Playwright简介

    • 2020年,微软(Microsoft)开源了一个名为Playwright的工具,与Selenium一样入门简单,支持多语言(Python、Java、Node.js、.NET),支持多浏览器(Chromium、Firefox、Webkit),可跨平台(Windwos、Linux、Mac OS)

    • Playwright同时支持接口自动化和UI自动化,为现代web应用提供了可靠的端到端的测试能力。

  • Playwright优势

    • 1)自动等待功能让自动化更可靠

    • 2)自动追踪:可以很方便地配置重试策略,自动的追踪结果,以截图和录屏的方式进行记录。

    • 3)断言机制:会根据网络环境进行自动断言,直到满足某种条件为止。

    • 4)异步执行:Playwright基于socket进行双向通讯,支持同步与异步执行两种方式

    • 5)可运行多页仿真场景:Playwright是通过上下文管理浏览器,相当于每一个测试用例都会创建一个独立的上下文,浏览器的上下文其实就是一个全新的浏览器,这种方式的好处就是在提速的同时又实现测试与测试之间的隔离,使得测试结果更加准确,所以可以实现并行执行。

    • 6)强大的工具集:还我们提供了强大的工具集,例如:脚本录制工具codegen、脚本编写以及调试工具playwright等

    • Python环境:python解释器+IDE工具,不知道怎么安装的可参考:python3.4 + pycharm 环境安装 + pycharm 使用

    • Playwright环境:

      • 安装Playwright:pip install playwright 

      • 安装内置浏览器(chromium,firefox,webkit):playwright install

4. Playwright入门实战

    • Playwright支持两大类元素定位方式,包括:

    • 1)get_by方式

      • get_by_id: 通过元素的 id 属性来查找元素,例如:element = page.get_by_id("my-id")

      • get_by_name: 通过元素的 name 属性来查找元素,例如:element = page.get_by_name("my-name")

      • get_by_text: 通过元素的文本内容来查找元素,例如:element = page.get_by_text("Submit")

      • get_by_title: 通过元素的 title 属性来查找元素,例如:element = page.get_by_title("my-title")

      • get_by_placeholder: 通过元素的 placeholder 属性来查找元素,例如:element = page.get_by_placeholder("my-placeholder")

      • get_by_selector: 通过 CSS 选择器来查找元素,例如:element = page.get_by_selector("#submit-button")

      • get_by_label: 根据label属性值查找元素,类似于HTML中的label标签和对应的for属性。

      • get_by_role: 通过角色方式定位元素,例如:element = page.get_by_role("button", name="Submit")

    • 2)page.locator方式

      • 通过ID定位元素:使用page.locator("#element-id")page.locator('id=element-id')定位。

      • 通过CSS选择器定位元素:使用page.locator("css=selector")定位。例如:element = page.locator("button#submit-button")

      • 通过XPath表达式定位元素:使用page.locator("xpath=expression")定位。例如:element = page.locator("//button[@id='submit-button']")

      • 通过名称定位元素:使用page.locator("name=element-name")定位。

      • 通过链接文本定位元素:使用page.locator("text=link-text")定位。

      • 通过部分链接文本定位元素:使用page.locator("partial_text=partial-link-text")定位。

      • 通过元素属性定位元素:使用page.locator("[attribute=value]")定位。

      • 通过标签名定位元素:使用page.locator("tag=tag-name")定位。

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

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

相关文章

Java8,函数式编程应用:

持续更新中: 函数式(Functional)接口 什么是函数式(Functional)接口 只包含一个抽象方法的接口,称为函数式接口。 你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式 抛出一个受检异常(即:非运行时异常)&#xff0c…

Linux学习:初识Linux

目录 1. 引子:1.1 简述:操作系统1.2 学习工具 2. Linux操作系统中的一些基础概念与指令2.1 简单指令2.2 ls指令与文件2.3 cd指令与目录2.4 文件目录的新建与删除指令2.5 补充指令1:2.6 文件编辑与拷贝剪切2.7 文件的查看2.8 时间相关指令2.9 …

为什么TestNg会成为Java测试框架的首选?还犹豫什么,看它!

上一篇自动化测试我们大概了解了测试的目标、测试的技术选型以及搭建平台的目标及需求,也确定了自动化测试方案以testNg作为整个测试流程贯穿的基础支持框架,那么testNg究竟有什么特点?本篇开始我们来详细的学习testNg这个测试框架。 为什么要…

软件设计师8--输入输出技术

软件设计师8--输入输出技术 考点1:输入输出技术数据传输控制方式中断处理过程例题: 考点1:输入输出技术 数据传输控制方式 √ 程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单&#xff0…

MySQL篇—执行计划之覆盖索引Using index和条件过滤Using where介绍(第三篇,总共三篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

python实现手机号归属地查询

手机上突然收到了某银行的短信提示,看了一下手机的位数,正好是11位。我一想,这不就是标准的手机号码吗?于是一个想法涌上心头——用python的库实现查询手机号码归属地查询自由。 那实现的效果如下: 注:电…

yolov7添加spd-conv注意力机制

一、spd-conv是什么? SPD-Conv(Symmetric Positive Definite Convolution)是一种新颖的卷积操作,它主要应用于处理对称正定矩阵(SPD)数据。在传统的卷积神经网络(CNN)中,…

【java数据结构】模拟二叉树的链式结构之孩子表示法,掌握背后的实现逻辑

📢编程环境:idea 📢树结构,以及叶子,结点,度等一些名词是什么意思,本篇不再赘述。 【java数据结构】模拟二叉树的链式结构之孩子表示法,掌握背后的实现逻辑 1. 认识二叉树1.1 二叉树…

桂院校园导航 | 云上高校导航 云开发项目 二次开发教程 2.0

Gitee代码仓库:桂院校园导航小程序 GitHub代码仓库:GLU-Campus-Guide 演示视频 【校园导航小程序】2.0版本 静态/云开发项目 演示 云开发项目 2.0版本 升级日志 序号 板块 详情 1 首页 重做了首页,界面更加高效和美观 2 校园页 新增…

Python判断结构20个实例

基本理论基础 Python中的选择判断结构是一种编程中常用的控制结构,它用于根据条件的真假决定程序的执行路径。选择判断结构有多种类型,包括if语句、if-else语句、if-elif-else语句以及嵌套的选择结构。 首先,我们来介绍最常见的if语句。if语…

浅谈WPF之Binding数据校验和类型转换

在WPF开发中,Binding实现了数据在Source和Target之间的传递和流通,就像现实生活中的一条条道路,建立起了城镇与城镇之间的衔接,而数据校验和类型转换,就像高速公路之间的收费站和安检站。那在WPF开发中,如何…

引入本地图片报错:require is not defined

文章目录 问题分析1. 原始写法2. 最初的解决方案3. 尝试使用 require 引入4. 封装方法进行解析引入图片 问题 Vue3 Vite 使用本地图片报错:require is not defined 分析 1. 原始写法 刚开始我是这样写的,数据是这样定义的,但是数据没出…

Vue.js+SpringBoot开发高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

2024年R2移动式压力容器充装证考试题库及R2移动式压力容器充装试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年R2移动式压力容器充装证考试题库及R2移动式压力容器充装试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上…

快速幂(求解原理+例题)

目录 反复平方法(快速幂): 代码: 例题:快速幂求逆元 作用: 快速求出 的结果。 时间复杂度: O(logk) 如果使用一般做法,从1循环到k,时间复杂度是O(k) 反复平方法&am…

倒计时35天

小红的子序列权值和 (nowcoder.com) #include<bits/stdc.h> using namespace std; #define int long long const int N2e56; const int inf0x3f3f3f3f; const double piacos(-1.0); const int mod1e97; int c[1100][1100]; int a[1100],b[5]; void solve() {int n;cin>…

照片变年轻怎么操作?收好这几个方法

照片变年轻怎么操作&#xff1f;在这个数字时代&#xff0c;我们手中的智能手机和相机成为了记录生活的重要工具。然而&#xff0c;随着时间的推移&#xff0c;照片中的人物往往会因为岁月的痕迹而显得苍老。那么&#xff0c;有没有一种方法可以让这些珍贵的回忆重新焕发青春呢…

[DevOps云实践] 跨AWS账户及Region调用Lambda

[DevOps云实践] 跨AWS账户及Region调用Lambda 本文將幫大家理清一下幾個問題: 如何跨不同AWS賬戶,不同Region來調用Lambda? 不同Lambda之間如何互相調用?有時我們希望我們的Lambda脚本能夠運行在多個AWS賬戶中的不同Region下,但是,我們還不希望每個下面都去建立一個運行…

从0开始学习NEON(1)

1、前言 在上个博客中对NEON有了基础的了解&#xff0c;本文将针对一个图像下采样的例子对NEON进行学习。 学习链接:CPU优化技术 - NEON 开发进阶 上文链接:https://blog.csdn.net/weixin_42108183/article/details/136412104 2、第一个例子 现在有一张图片&#xff0c;需…

【CSP试题回顾】201403-2-窗口

CSP-201403-2-窗口 解题思路 窗口存储结构&#xff1a;首先&#xff0c;使用一个结构体MyWindow来存储每个窗口的信息&#xff0c;包括窗口的序号&#xff08;index&#xff09;和矩形区域的四个顶点坐标&#xff08;x1, y1, x2, y2&#xff09;。所有窗口的信息存储在一个向量…