Playwright快速上手-1

news2024/11/26 1:34:46

 

前言

    随着近年来对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.coloradmin.cn/o/878075.html

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

相关文章

【瑞芯微RK3588】【部署yolov5】学习资料总结

各类教程 1.官网:瑞芯微RK3588板子NPU的使用; 2. 【实测有用】在PC虚拟机上转换模型,再下载到RK3588板子上部署YOLOv5; 3. 在服务器上转换模型,再下载到RK3588板子上部署YOLOv5; 4. github上的各类资料…

【设计模式】2.策略模式

前言 代码例子是来大话设计模式,本文主要是根据个人的理解,对书中的内容做学习笔记。如果个人理解的有问题,请各位大佬指正🙏。 基础遗忘了可以复习一下: 面向对象Java基础 简单了解UML类图 1、业务背景 商场收银软…

双色球彩票系统---(java实现)

双色球彩票系统:需求:投注号码由6个红色号码和1个蓝色球号码组成。红色球号码从1-33中选择,蓝色球号码从1-16当中选择 * 红 蓝 * 一等奖 6 1 * 二等奖 6 0 * 三等奖 5 1 * 四等奖 5 0 * 4 1 * 五等奖 4 0 * …

NPCon:AI模型技术与应用峰会北京站 (参会感受)

8月12日,我有幸参加了在北京皇家格兰云天大酒店举行的“AI模型技术与应用峰会”。 这次会议邀请了很多技术大咖,他们围绕: 六大论点 大模型涌现,如何部署训练架构与算力芯片 LLM 应用技术栈与Agent全景解析 视觉GPU推理服务部署 …

ubuntu部署haproxy

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理. 1、更新系统报 通过在终端中运行以下命令,确保所有系统包都是最新的 sudo apt updatesudo apt upgrade 2、安装Haproxy sudo apt install haproxy 设置开机自动启动haproxy服务 sudo systemctl enable h…

.gitignore匹配规则

目录 1.直接一个名称2.斜杠 /3.符号 *4.问号 ?5.感叹号 !6.gitkeep 借鉴抖音账号: 渡一前端提薪课 1.直接一个名称 会忽略目录下的所有该名称文件和文件夹,无论嵌套多深。 2.斜杠 / 1.斜杠在开头(/dist):忽略和.gitig…

开发规范(一):Mysql篇

1. 流程 数据库表结构的修改需要相关人员和Leader一起评审,保证符合涉及规范。 不允许使用root账号,所有开发和测试应当分配指定账号,并授予最小数据库权限 2. 数据库与表规范 表命名规范 常规表表名以 t_开头,t 代表 table 的意思…

Kafka第三课

Flume 由三部分 Source Channel Sink 可以通过配置拦截器和Channel选择器,来实现对数据的分流, 可以通过对channel的2个存储容量的的设置,来实现对流速的控制 Kafka 同样由三大部分组成 生产者 服务器 消费者 生产者负责发送数据给服务器 服务器存储数据 消费者通过从服务器取…

Redis数据结构——压缩列表ziplist

定义 压缩列表ziplist是Redis中列表和哈希键的底层实现方式之一。 当一个列表只包含少量列表项,并且每个列表项要么是小整数值,要么是较短的字符串时,那么Redis就会使用压缩列表来作为列表的底层实现。 另外,当一个哈希表中只包含…

FPGA + WS2812采灯控制

文章目录 一、WS2812C-2020-V11、产品概述2、引出端排列及功能3、数据传输时间4、数据传输方法 二、使用WS2812C显示图片1、静态显示2、动态显示 一、WS2812C-2020-V1 1、产品概述 WS2812C-2020-V1是一个集控制电路与发光电路于一体的智能外控LED光源;其外型采用最…

Docker中Tomcat部署步骤

第一次访问没有东西。

2023牛客暑期多校训练营9 I.Non-Puzzle: Segment Pair(tag:差分)

文章目录 题目大意题解参考代码 题目大意 1 ≤ n , l i , r i ≤ 5 ∗ 1 0 5 1 \leq n,l_i,r_i \leq 5*10 ^5 1≤n,li​,ri​≤5∗105 题解 这题 l / r l/ r l/r 的数据在 5 1 0 5 5\times 10^5 5105 ,想到差分。 特殊的是它有两条线段,对于同一个点…

Photoshop窗口->排列菜单下进行匹配缩放/位置/旋转

首先,在Photoshop中打开4张以上图片,并选择“窗口”->“排列”->"四联": 将鼠标移动至其中一张图片中,按住“Z”键,拖动鼠标,调整图片缩放比例至60.55%, 再选择“窗口”->“…

一篇打通,pytest自动化测试框架详细,从0到1精通实战(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 读取文件 1、读取…

Python中使用隧道爬虫ip提升数据爬取效率

作为专业爬虫程序员,我们经常面临需要爬取大量数据的任务。然而,有些网站可能会对频繁的请求进行限制,这就需要我们使用隧道爬虫ip来绕过这些限制,提高数据爬取效率。本文将分享如何在Python中使用隧道爬虫ip实现API请求与响应的技…

Grounding DINO:根据文字提示检测任意目标

文章目录 1. 背景介绍2. 方法创新2.1 Feature Extraction and Enhancer2.2 Language-Guided Query Selection2.3 Cross-Modality Decoder2.4 Sub-Sentence Level Text Feature2.5 Loss Function3. 实验结果3.1 Zero-Shot Transfer of Grounding DINO3.2 Referring Object Detec…

多线程并发服务器

代码&#xff1a; #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 6666 //1024~49151 #define IP "192.168.122.130" //ifconfig查看本机IP #include <pthread.h> //…

urllib与数据解析

urllib爬取数据 import urllib.request as request# 定义url url "https://www.baidu.com" #模拟浏览器发起请求获取响应对象 response request.urlopen(url)""" read方法返回的是字节形式的二进制数据 二进制--》字符串 解码 decode( 编码的格式…

CSDN编程题-每日一练(2023-08-14)

CSDN编程题-每日一练&#xff08;2023-08-14&#xff09; 一、题目名称&#xff1a;小股炒股二、题目名称&#xff1a;王子闯闸门三、题目名称&#xff1a;圆小艺 一、题目名称&#xff1a;小股炒股 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&#xff1a; …

一文带你拿下基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 1.Selenium IDE&#xff1a;Fir…