一款强大的端到端测试工具Playwright介绍
作者:KooFE 发布时间:2021-06-19 11:59:55
Playwright
Playwright 是微软公司开源的一款 UI 自动化测试工具,它的第一个版本 v0.10.0 发布于 2020 年 2 月初,目前的最新版本是 v1.18.0,版本的迭代速度还是很快的。
作为一款端到端的测试工具,在过去短短的两年时间里,Playwright 已经赢得了越来越多开发人员的青睐。Best of JS 网站对比了各个测试框架 2021 年在 GitHub 新增的 star 数量,Playwright 位于榜首位置,其受欢迎的程度可见一斑。本文将对 Playwright 的特点做一些的介绍。
跨浏览器
Playwright 支持了所有现代的浏览器内核,包括 Chromium, WebKit 和 Firefox,因此几大主流的浏览器 Chrome、Edge、Firefox、Opera 以及 Opera 都支持。如果要对页面做兼容性方面的测试,Playwright 是一个很好的选择,毕竟 Puppeteer 支持的浏览器比较少。
支持多编程语言
Playwright 提供了多种编程语言的 API,包括 TypeScript、JavaScript、Python、.NET 和 Java,除了前端之外的其他工程师,也可以选择自己熟悉的语言开发功能。比如,测试工程师可能对 Python 更为熟悉。在语言的支持方面,Puppeteer 做得也不是很好,很多人在抱怨它的 Python API 很难用。
const { chromium, firefox, webkit } = require('playwright');
(async () => {
const browser = await chromium.launch(); // Or 'firefox' or 'webkit'.
const page = await browser.newPage();
await page.goto('http://example.com');
// other actions...
await browser.close();
})();
保存登录信息
在测试中,经常会有页面登陆的场景,在单元测试中为了提高效率避免多次登陆,Playwright 提供了保存登陆上下文信息的功能。只需要将已保存的登陆信息,重新加载到页面中,即可恢复到用户已登陆的状态。
执行环境的隔离
Playwright 新增 Context 的概念,它能够在单个浏览器实例中提供相互隔离的执行环境。特别是在同时测试多个页面时,这个特性是非常有用的,很方便的实现网页频繁切换。每个页面在各自的 Context 中执行,页面之间不会产生干扰,包括 Cookies 等信息都是隔离的。
const { chromium } = require('playwright');
// Create a Chromium browser instance
const browser = await chromium.launch();
// Create two isolated browser contexts
const userContext = await browser.newContext();
const adminContext = await browser.newContext();
// Create pages and interact with contexts independently
选择器
Playwright 支持多种元素定位方式,比如 CSS 选择器、XPath 选择器等,而且使用起来比较友好。
// Clicks a <button> that has either a "Log in" or "Sign in" text.
await page.locator('button:has-text("Log in"), button:has-text("Sign in")').click();
自动等待
Playwright 在与元素交互操作(如点击操作)之前,会进行一系列可操作性检查,以确保这些行动按预期运行。它会自动等待所有相关检查通过,然后才执行相关的操作。这样可以避免元素因为没有渲染,而导致交互操作的失败。在其他的一些测试框架中,需要开发人员自己手动设置等待时间,而且手动设置的时间往往也是不精确的。
测试框架
Playwright 作为一个测试框架,集成了断言、API 测试、测试注解等功能。在测试领域,Playwright 对标的应该是 Selenium,并且在测试领域中会有更多的应用场景。在开发体验和运行效率方面,Playwright 可谓是后来居上,新技术的应用使其远远优于 Selenium。另外,在对移动端的支持、以及脚本录制等方面,Playwright 也是有很好的表现。
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('https://playwright.dev/');
const title = page.locator('.navbar__inner .navbar__title');
await expect(title).toHaveText('Playwright');
});
本文只对 Playwright 做了一些简单的介绍,并未深入的展开,从当前的使用的趋势和热度来看,还是有必要对它进行一定的了解和关注,更多关于端到端测试工具Playwright的资料请关注脚本之家其它相关文章!
来源:https://juejin.cn/post/7056362805942976549


猜你喜欢
- 通常python安装包都会被默认装在/usr/local/pythonx/lib/site-packages(linux),但是我们有时想自
- 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片
- Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。
- 本文实例讲述了Python简单生成8位随机密码的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env python# -*-
- 本文实例讲述了Flask框架各种常见装饰器。分享给大家供大家参考,具体如下:效果类似django的process_request的装饰器@a
- 写了一个小巧的jquery拾色工具,代码简单得不得了,只有这么几行:(function($){ $.fn.pickColor=fu
- 2008北京奥运会块到了,下面的js代码将告诉你,离奥运会开幕还要多少天!让我们一起迎接这美好的时刻。相关文章推荐:各种北京2008奥运会倒
- 写在前面今天在用爬虫及Pandas更新股票日线数据的时候发现KeyError报错,后面跟了一个DataFrame列索引,一开始以为是索引修改
- 在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交
- 半透明效果有时候会给页面增加不少色彩,特别是Vista盛行之后,半透明效果更加受推崇。在诸多可用于Web浏览的图片格式中,只有PNG格式和G
- 1. SELECT…FOR UPDATE 是什么?作用是什么?select for update 即排他锁,排他锁又称
- 本文实例为大家分享了python实现简单图片物体标注工具的具体代码,供大家参考,具体内容如下# coding: utf-8"&qu
- MySQL 提供了一个很有意思的Engine:Federated!如果你了解Linux下面的Link的话,就应该很好理解这个Federate
- 在做数据库备份和还原数据库的时候出现"错误2812:未能找到存储过程’master.dbo.xp_fileexist’"
- 输入汉字提示拼音,试试下面这个函数,不知是不是你要的那个:查询汉字便宜到词典网<%function getpychar(ch
- SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞。一、CPU过高的问题1、查询系统动态视图查询执行时间长的s
- 监听服务的信号,实现平滑启动,linux信号说明package main import ("context""
- 1.PyQtGraph简介:pyqtgraph的主要用途:1、为数据、绘图、视频等提供快速、可交互图形显示。2、提供快速开发应用的工具。2.
- 一、爬虫是什么? 在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得
- 本文实例讲述了Python实现生成随机数据插入mysql数据库的方法。分享给大家供大家参考,具体如下:运行结果:实现代码:import ra