强!不用写一行代码!Python最强自动化神器!

news2024/11/15 17:39:55

1、Playwright介绍

Playwright是一个由Microsoft开发的开源自动化测试工具,它可以用于测试Web应用程序。Playwright支持多种浏览器,包括Chrome、Firefox和WebKit,同时也支持多种编程语言,如JavaScript、TypeScript、Python和C#。

2、特点、使用场景

Playwright具有以下特点:

  • 支持所有主流浏览器
  • 跨平台:Windows、Linux 和macOS
  • 可用于模拟移动端WEB应用的测试。
  • 支持无头模式(默认)和有头模式

使用场景包括但不限于:

  • 自动化测试:开发人员和测试人员可以使用Playwright来编写自动化测试脚本,验证Web应用程序的功能和性能。
  • 性能测试:Playwright可以模拟多个用户同时访问Web应用程序,帮助测试应用程序在高负载情况下的性能表现。
  • 可访问性测试:Playwright可以模拟用户使用辅助技术(如屏幕阅读器)访问Web应用程序,帮助测试应用程序的可访问性。
  • 网页截图和录制:Playwright可以生成网页截图,也可以录制用户操作过程,帮助开发人员和测试人员分析问题。

总之,Playwright可以用于各种Web应用程序测试场景,帮助团队提高测试效率和测试覆盖率。

3、架构原理

playwright共由三部分组成:

  • client:在客户端是我们用不同的编程语言编写的代码,如JavaScript,Java,Python,C#等。

  • server:Playwright的server通过nodejs构建并负责与client 以及不同的 Web 浏览器引擎进行通信。

  • 通信协议:client通过WebSocket 协议与Playwright server 通信;

Playwright使用 Chrome DevTools 协议(CDP)与 Chromium 通信。触发测试后,client端代码将被转换为JSON格式,然后使用websocket协议发送到服务器。palywright通过单个 websocket 协议连接传达所有请求,该连接将保持不变,直到所有测试执行完成。由于命令是在单个连接上发送的,因此测试失败或不稳定的可能性较小,并且命令可以快速执行。这种架构与Selenium相反,Selenium使用HTTP连接协议,并将每个命令(如浏览器打开,单击,关闭浏览器)作为单独的HTTP请求发送。此外,在Selenium中,服务器和客户端之间的连接将在每次请求后终止,并为下一个请求重新建立。这也是Playwright为什么比selenium快的原因!

4、环境安装

Playwright环境部署简单,不像Selenium那样需要下载浏览器对应版本的驱动程序chromedriver,直接安装即可:

# 1、安装 playwright:
  pip3 install playwright

#  2、安装所需的浏览器 chromium,firefox 和 webkit:
 playwright install
 
# 3、如何只安装特定的浏览器,比如Chrome: 
playwright install chromium

如果您在使用 pip3 install playwright 安装 Playwright 时遇到下载速度缓慢的问题,可以尝试以下方法来加速下载:

更换 pip 镜像源

可以使用国内的 pip 镜像源来替代默认的源,例如使用阿里云的 pip 镜像源或者清华大学的镜像源等。可以使用以下命令来更换 pip 镜像源:

pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/

5、快速开始

Playwright 支持2种运行方式: 同步异步

# 异步代码
from time import sleep

from playwright.async_api import async_playwright
async def main():
    async with async_playwright() as driver:
        browser=await driver.firefox.launch(headless=False)
        page=await browser.new_page()
        await page.goto('https://www.example.com')
        print(await page.title())
        await browser.close()
        sleep(10)

asyncio.run(main())

# 同步执行代码
from playwright.sync_api import sync_playwright
with sync_playwright() as driver:
    browser=driver.chromium.launch(headless=False)
    page=browser.new_page()
    page.goto('https://www.example.com')
    print(page.title())
    sleep(10)
    browser.close()

6、代码自动生成

Playwright自带了一个代码生成器工具,可以帮助你快速生成Playwright自动化测试脚本。通过代码生成器,你可以在浏览器中进行交互式操作,然后自动生成相应的Playwright代码。

使用Playwright代码生成器的基本步骤:

  • 打开Playwright代码生成器网站:https://playwright.dev/docs/codegen/
    或者通过命令行执行:
playwright codegen https://playwright.dev
  • 在网页中,你可以选择要使用的编程语言(如JavaScript、Python、TypeScript),以及要测试的目标网站。

  • 点击“Start recording”按钮,然后在弹出的浏览器窗口中进行交互式操作,如点击按钮、填写表单等。

  • 完成交互式操作后,点击“Stop recording”按钮。

  • 在页面中将生成的代码显示出来,你可以复制并粘贴到你的项目中使用。

通过使用代码生成器,你可以节省大量时间,特别是对于那些不熟悉Playwright API的开发人员来说,这是一个非常有用的工具。生成的代码可以作为起点,然后根据需要进行修改和扩展。

7、追踪查看器

在Playwright中,追踪查看器(Trace Viewer)是一个非常有用的工具,可以帮助你分析和调试自动化测试过程中的性能问题和其他关键信息。通过追踪查看器,你可以查看详细的性能数据、网络请求、页面事件等,以便更好地了解自动化测试的执行过程。

以下是使用追踪查看器的基本步骤:

1、启用追踪:

在Playwright的代码中,你可以通过调用start_tracing方法来启用追踪功能。例如:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    context = browser.new_context()
    page = context.new_page()
    trace_path = 'trace.json'
    page.start_tracing(path=trace_path)
    page.goto('https://www.example.com')
    page.click('button#submit')
    page.wait_for_navigation()
    page.stop_tracing()
    context.close()
    browser.close()

2、保存追踪数据:
在代码中指定追踪数据保存的路径,如上例中的trace_path = ‘trace.json’。

3、打开追踪查看器:
在浏览器中,打开Playwright追踪查看器网站:https://playwright.dev/docs/trace-viewer/

4、加载追踪数据:
在追踪查看器网站中,点击“Load”按钮,然后选择你保存的追踪数据文件(如trace.json)。

5、分析追踪数据:
一旦加载了追踪数据,你就可以在追踪查看器中查看各种性能指标、网络请求、页面事件等信息。你可以使用追踪查看器的各种功能和过滤器来深入分析自动化测试的执行过程,找出潜在的性能问题和优化空间。

官网:

https://playwright.dev/

更多特性可参考项目地址: https://github.com/microsoft/playwright

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

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

相关文章

2014年认证杯SPSSPRO杯数学建模B题(第一阶段)位图的处理算法全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 B题 位图的处理算法 原题再现: 图形(或图像)在计算机里主要有两种存储和表示方法。矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形,位图则使用像素来描述图像。一般来说&#…

【Chrome控制台】application的使用

首先打开调试面板「windows:F12;mac:commandoptioni」,找到Application选项卡。 如下两区域与pwa相关,也就是渐进式web应用程序。 使用前端数据库如websql或IndexDB,可以在如下选项中查看。 数据库详情要到Storage中…

nysm:一款针对红队审计的隐蔽型后渗透安全测试容器

关于nysm nysm是一款针对红队审计的隐蔽型后渗透安全测试容器,该工具主要针对的是eBPF,能够帮助广大红队研究人员在后渗透测试场景下保持eBPF的隐蔽性。 功能特性 随着基于eBPF的安全工具越来越受社区欢迎,nysm也应运而生。该工具能保持各种…

Gitee码云最有价值开源项目之一:CRMEB开源商城系统,全平台、全功能的电商解决方案

一、引言 随着电子商务的快速发展,开源电商系统在行业中扮演着越来越重要的角色。CRMEB开源商城系统作为其中的佼佼者,凭借其强大的功能、卓越的性能和极高的易用性,成为了许多开发者和商家的首选。本文将对CRMEB开源商城系统进行深入的探讨…

Kimi是什么?免费Kimi chat介绍

1. Kimi是什么? Kimi是由月之暗面科技有限公司(Moonshot AI)开发的人工智能助手,专注于提供高质量的对话和信息处理服务。 月之暗面公司创立于2023年3月,创始团队核心成员参与了Google Gemini、Google Bard、盘古NLP、…

java算法第32天 | 贪心算法 part02 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 本题中理解利润拆分是关键点! 不要整块的去看,而是把整体利润拆为每天的利润。假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[…

迷宫(一)(DFS BFS)

//新生训练 #include <bits/stdc.h> using namespace std; int n, m; bool f; char mp[15][15]; int vis[15][15]; int dir[4][2] {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; bool in(int x, int y) {return 0 < x && x < n && 0 < y && y …

美人鱼图像双目配准-Mermaid

前言&#xff1a; 我在进行一项双目测距的项目&#xff0c;已经通过matlab 进行了相机标定&#xff0c;如果手动选择左右图像里的相同物体&#xff0c;是可以给出可接受距离的。 但是现在我希望能够让左视图的坐标点和右视图的坐标点进行匹配&#xff08;如下图&#xff09; …

Windows 安装 Java JDK 17 (源码方式安装)【图文详细教程】

这里我选择安装的 Java JDK 的版本为 17 Java JDK 下载 这里选择下载压缩包形式的 Java JDK&#xff0c;下载完成后&#xff0c;我们只需要对压缩包进行解压&#xff0c;然后再配置系统环境变量就可以了下载网址&#xff1a;https://www.oracle.com/cn/java/technologies/down…

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…

电脑总是自动删除下载或解压后的文件

电脑总是自动删除下载或解压后的文件 前言&#xff1a; 最近navicat15 破解时候&#xff0c;下载安装包和破解包&#xff0c;破解包在解压后自动删除&#xff0c;要不然就是文件包含病毒电脑自动关闭打开功能。 解决方案&#xff1a; 注意&#xff1a;注意电脑重启或者重新打…

springboot 大文件分片上传

springboot 大文件分片上传 constantentityvocontrollerutils大文件分片上传是一种将大文件分割成多个小文件片段,然后分别上传这些小文件片段的方法。这种方法的好处包括: 减少重新上传开销:如果网络传输中断,只需重传未上传的部分,而不是整个文件。 提高灵活性:分片大小…

【ZZULI数据结构实验一】多项式的三则运算

【ZZULI数据结构实验一】多项式的四则运算 ♋ 结构设计♋ 方法声明♋ 方法实现&#x1f407; 定义一个多项式类型并初始化---CreateDataList&#x1f407; 增加节点---Getnewnode&#x1f407; 打印多项式类型的数据-- PrintPoly&#x1f407; 单链表的尾插--Listpush_back&…

Bert基础(七)--Bert实战之理解Bert模型结构

在篇我们将详细学习如何使用预训练的BERT模型。首先&#xff0c;我们将了解谷歌对外公开的预训练的BERT模型的不同配置。然后&#xff0c;我们将学习如何使用预训练的BERT模型作为特征提取器。此外&#xff0c;我们还将探究Hugging Face的Transformers库&#xff0c;学习如何使…

【机器学习】引领未来的力量:技术革新与应用探索

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

nodejs中使用@maxmind/geoip2-node 查询地理位置信息

介绍 maxmind/geoip2-node 是一个Node.js模块&#xff0c;用于与MaxMind的GeoIP2数据库进行交互&#xff0c;从而获取IP地址的地理位置信息。MaxMind的GeoIP2数据库包含了全球范围内的IP地址和对应的地理位置信息&#xff0c;如国家、城市、经纬度等。使用maxmind/geoip2-node…

利用sin/cos原理驱动步进电机

利用sin/cos原理控制步进电机转动 前言什么是步进电机驱动器细分控制电机内部结构图片步进电机驱动原理&#xff08;重要&#xff09;步进电机参数&#xff11;、步距角&#xff1a;收到一个脉冲转动的角度&#xff12;、细分数 &#xff1a;&#xff11;&#xff0f;&#xf…

M1 mac安装 Parallels Desktop 18 激活

M1 mac安装 Parallels Desktop 18 激活 下载安装Parallels Desktop 18.1.1 (53328) 激活1. 拷贝prl_disp_service2. 在终端打开Crack所在位置3. 输入命令&#xff0c;激活成功 下载 安装包和激活文件下载地址 链接: https://pan.baidu.com/s/1EjT7xeEDcntIIoOvvhBDfg?pwd9pue …

Kubernetes Pod深度解析:构建可靠微服务的秘密武器(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kubernetes概述 2、Pod概述 二、Po…

AI老人跌倒监测报警摄像机

AI老人跌倒监测报警摄像机是一种基于人工智能技术的智能监控设备&#xff0c;专门用于监测老年人的跌倒情况并提供实时报警功能&#xff0c;以及时处理紧急情况&#xff0c;保障老人安全。这种摄像机利用先进的AI算法和深度学习技术&#xff0c;能够实时监测老人的行为&#xf…