Bootstrap

微软开源WebUI自动化测试神器Playwright​​​​​​​

使用Playwright进行快速可靠的跨浏览器测试。

前言:

现如今,Web的开发与发布速度是非常快的;Web应用变得越来越复杂,而且可以在所有设备上运行——我们的手机、平板电脑和台式机等,每个设备都运行不同的浏览器引擎。速度和目标的增加给测试过程带来了巨大的压力: 跨浏览器的自动化测试越来越重要。

End-to-end的自动化测试功能非常强大:至少在理论上,通过模拟用户交互行为,它们可以验证功能、性能和可用性。

但在实践中,end-to-end测试可能很慢,不稳定且难以维护。

今天我们就来隆重介绍一下Playwright,它是一个跨浏览器的自动化库,将其用于测试时显得更加快速、可靠和强大。

Playwright可以跨多种浏览器测试网络应用:

基于chromium的浏览器,如谷歌Chrome和新的Microsoft Edge;

基于webkit的苹果Safari;

基于gecko的Mozilla Firefox;

现在,

借助单个API,Playwright可以在基于可靠和快速执行的基础上跨不同的浏览器自动执行各种场景。

Playwright通过无超时自动化提高了可靠性

现在的Web应用程序样式丰富且交互性强,并动态响应用户的操作。诸多的异步行为使应用程序难以实现自动化预测,网络请求可能比平时花费更长的时间,导致一直在加载的状态。

Playwright为UI准备了自动等待,这有助于测试者创建可靠且易于编写的测试。

例如,点击页面时,将自动等待目标元素可见并可用。

这样,开发人员或者测试人员可以编写专注于测试场景的测试用例,而不是针对时间或UI状态的测试。久而久之,这显著提高了测试代码的可维护性。

实际上,Playwright使用了事件驱动的架构,可以侦听浏览器事件。Playwright测试可以准确地等待DOM更改、网络请求,甚至新的控制台日志。 Playwright使用与浏览器的开发者工具(F12)相同的协议,这些工具是开发人员都熟悉而且喜欢的工具。

通过精确的浏览器事件,自动化脚本可以避免超时。在传统的end-to-end测试中,等待应用加载完成通常是管理异步行为的唯一方法。但是,超时是一个滑坡效应:它们总是导致不一致的失败或“不稳定的测试”。

如下图,自动等待页面操作和API,以实现更精细的控制。

Playwright可扩展的自动化:快速,并行执行

Playwright旨在 在本地和云环境中提供快速、并行的自动化测试;Chromium,Firefox或WebKit的单个实例可以创建多个隔离的并发的浏览器上下文。这显着提高了性能,并支持独立的多页面模拟场景

一个浏览器可以承载多个web页面并定义上下文级的行为,例如网络拦截或身份验证凭据。浏览器上下文还可以模拟移动视图,模拟地理位置和区域环境。这使单个WebKit实例可在多个设备配置上并行执行多个页面场景:desktop,iPhone和iPad。

现在和未来的Web自动化

Web平台比以往任何时候都更有强大,而且还在不断发展。Playwright的出现是为了跟上网络浏览器和Web应用程序不断增长的功能。它还包括渐进式Web应用程序(PWA)使用的更新的浏览器功能。

Playwright可以通过一个API自动化实现Chromium,Firefox和WebKit的多种功能:

  • 模拟移动视图,权限,地理位置和区域设置

  • 通过shadow-piercing选择器支持Web组件

  • 网络拦截,用于修改和模拟网络活动

  • 文件上传和下载

  • 跨多个框架,选项卡和弹出窗口的方案

  • 来自鼠标和键盘的可信赖本机输入事件

  • 网络工作者和进程外iframe

Playwright-可以拦截网络请求,从而中止,修改或模拟网络请求,如下:

Playwright入门:在本地和CI

目前在npm上更新到Playwright 1.7.1,官网地址:https://www.npmjs.com/package/playwright

安装Playwright

前提是你需要安装过Node.js

//Step 1、安装 playwright-python 依赖库 
pip3 install playwright

//Step 2、# 安装浏览器驱动
//将主流的Chromeium、Firefox、Webkit浏览器驱动下载到本地
python -m playwright install

Win系统安装过程如下图: