全面掌握Playwright:从入门到精通

全面掌握Playwright:从入门到精通

有这么一篇文章, 它系统地介绍了一些基础概念, 介绍了系统的架构, 介绍了安装过程, 介绍了编码demo也就是实例, 介绍了常用API, 介绍了录制脚本的方法, 还介绍了在无头模式下的应用以及它和别的事物的对比。相信只要大家认真去阅读这篇文章, 之后肯定会对相关内容有一个概括性的认识, 并且能够编写自动化测试脚本, 然后在实际工作当中去进行应用, 这篇文章篇幅比较长, 所以建议大家收藏起来并且多读几遍!

概述

是一款由微软所开发的Web UI自动化测试工具, 其支持的浏览器涵盖了: , and , 并且其支持的编码语言包含了: Node.js、、C#以及Java语言。

官网

具有以下特点:

一、支持所有主流浏览器并跨平台

对所有主流浏览器予以支持, 其中包括基于特定内核的浏览器以及Edge浏览器、基于特定内核且属于Apple的浏览器以及其他相关浏览器, 不过不支持IE11。

跨平台:、Linux 和macOS

可用于模拟移动端WEB应用的测试,不支持在真机上测试。

支持无头模式(默认)和有头模式

二、快速可靠的执行

自动等待元素

基于协议,可以接受浏览器(服务端)的信号

单个浏览器实例之中, 创建多个浏览器上下文之举, 被称之为浏览器上下文并行, 此情形下, 每个浏览器上下文均有能力处理多个页面。

有弹性的元素选择:可以使用文本、可访问标签选择元素。

架构

如下图所示

具体解释:

在客户端, 存在着我们运用不同编程语言编写而成的代码, 比如说, 有Java, 还有C#等。

通过构建,负责与, 以及不同的, Web 浏览器引擎进行通信。

通信协议:通过 协议与 通信;

使用一种被称作协议(CDP)的东西来与其他对象进行通信, 针对特定的对象和另外的对象, 实现了属于自身的协议, 这种协议类似于CDP, 一旦触发相关测试, 终端代码会被转变为JSON格式, 接着运用协议发送至服务器, 借助单个协议连接来传达所有请求, 此连接会维持原状, 直至所有测试执行完毕,鉴于命令是在单个连接上予以发送的, 所以测试失败或者不稳定的可能性比较小, 并且命令能够快速执行。这种架构与之相反, 它运用HTTP连接协议, 把像浏览器打开这个命令, 当作单独的HTTP请求发送, 还在单击时发送当作一个独立操作的单独HTTP请求, 发送密钥的操作作为单独的HTTP请求进行发送, 关闭浏览器也作为单独的HTTP请求来发送。另外, 在此架构中, 服务器和客户端两人之间的连接会在每一次请求完成之后就终止掉, 并且会针对下一个请求重新去建立连接。最后着重强调: 这便是比其他情形快的缘由所在!

安装

我们以为例,版本需要3.7+

pip

pip msvc-

备注: 要是属于java编码范畴, 那就得借助maven来进行构建, pom.xml是像下面这样的。

com..

1.28.1

基础编码

from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(channel="chrome", headless=False) page = browser.new_page() page.goto("http://www.baidu.com") print(page.title()) browser.close()

无头模式

默认是使用无头模式,在上面的代码中如果修改为

= p..(="")

大家在运行代码之际, 会察觉到这般情况: 脚本呢, 依旧是会运行的, 然而, 在整个测试的过程当中, 却根本没有启动浏览器。

没有界面的那种浏览器, 被称作无头浏览器, 它具备完整的浏览器内核, 其中涵盖了解析引擎、渲染引擎等。无头浏览器与普通浏览器最大的差异在于, 其执行进程里无法看到运行的界面, 然而我们依旧能够借助GUI测试框架的截图功能, 截取它执行期间的页面。

无头浏览器的主要应用场景

用于 GUI 自动化测试、页面监控、网络爬虫以及无桌面的 linux 系统中的是无头浏览器。这里重点讲讲 GUI 自动化测试, 在 GUI 测试期间, 使用无头浏览器的好处主要体现于以下若干方面:

无头浏览器缺点

1. 不能完全模拟真实的用户行为

2. 不便于调试(各个浏览器的开发者工具)

主流的无头浏览器概述

,从59版本开始支持

,从56版本开始支持

运用所编写的无头浏览器, 是可以予以支持的, 支持macOS, 支持Linux。

,使用编写的无头浏览器,使用作为引擎

,使用Java编写的无头浏览器,使用Rhino 作为引擎

录制脚本

能够被用来进行脚本录制, 其使用的方式是极为简单的, 只要是那些玩过与ui自动化测试的录制有着关联的工具的人, 三分钟便能够学会并上手!

使用命令

会启动浏览器页面,然后识别页面中的元素,并记录操作过程

过程的操作凭借记录得以进行, 这般便是此为自动化测试里的录制工具, 坚信有过自动化测试之举的学友皆通彻达悟。

使用命令

-- -o .py -b

会把我们在浏览器中的操作脚本化并保存到.py中

常用API

大家可以相关文档查看api

page.()通过显式和隐式可访问性属性定位。

page.()按文本内容定位。

page.()通过关联标签的文本查找表单控件。

page.()按占位符查找输入。

page.()通过其文本替代品定位元素,通常是图像。

page.()通过标题属性定位元素。

它依据data - 属性来对元素进行定位, 此操作借助page.()来实现, 元素定位过程可以配置其他属性。

除了上述所说的定位方式情况下, 还对8种by元素定位予以支持, 其中包含id、xpath、css等等之类的, 另外呢, 还有依据W3C标准规定的协议的为5种定位方式。

层叠样式表、链接文本、链接文本、标签名、路径表达式。

把这些定位归类成3种,分别是:css、xpath、text

写相关操作:clear、fill

点击:click、

下拉选择框:

文件上传:

鼠标拖动:down、up、move、wheel

触摸屏幕:tap

键盘按键:press

Wap.sjzxtzx.cN/Article/808116.sHtML
Wap.sjzxtzx.cN/Article/808118.sHtML
Wap.sjzxtzx.cN/Article/808120.sHtML
Wap.sjzxtzx.cN/Article/808122.sHtML
Wap.sjzxtzx.cN/Article/808124.sHtML
Wap.sjzxtzx.cN/Article/808126.sHtML
Wap.sjzxtzx.cN/Article/808128.sHtML
Wap.sjzxtzx.cN/Article/808130.sHtML
Wap.sjzxtzx.cN/Article/808132.sHtML
Wap.sjzxtzx.cN/Article/808134.sHtML
Wap.sjzxtzx.cN/Article/808136.sHtML
Wap.sjzxtzx.cN/Article/808138.sHtML
Wap.sjzxtzx.cN/Article/808140.sHtML
Wap.sjzxtzx.cN/Article/808142.sHtML
Wap.sjzxtzx.cN/Article/808144.sHtML
Wap.sjzxtzx.cN/Article/808146.sHtML
Wap.sjzxtzx.cN/Article/808148.sHtML
Wap.sjzxtzx.cN/Article/808150.sHtML
Wap.sjzxtzx.cN/Article/808152.sHtML
Wap.sjzxtzx.cN/Article/808154.sHtML
Wap.sjzxtzx.cN/Article/808156.sHtML
Wap.sjzxtzx.cN/Article/808158.sHtML
Wap.sjzxtzx.cN/Article/808160.sHtML
Wap.sjzxtzx.cN/Article/808162.sHtML
Wap.sjzxtzx.cN/Article/808164.sHtML
Wap.sjzxtzx.cN/Article/808166.sHtML
Wap.sjzxtzx.cN/Article/808168.sHtML
Wap.sjzxtzx.cN/Article/808170.sHtML
Wap.sjzxtzx.cN/Article/808172.sHtML
Wap.sjzxtzx.cN/Article/808174.sHtML
Wap.sjzxtzx.cN/Article/808176.sHtML
Wap.sjzxtzx.cN/Article/808178.sHtML
Wap.sjzxtzx.cN/Article/808180.sHtML
Wap.sjzxtzx.cN/Article/808182.sHtML
Wap.sjzxtzx.cN/Article/808184.sHtML
Wap.sjzxtzx.cN/Article/808186.sHtML
Wap.sjzxtzx.cN/Article/808188.sHtML
Wap.sjzxtzx.cN/Article/808190.sHtML
Wap.sjzxtzx.cN/Article/808192.sHtML
Wap.sjzxtzx.cN/Article/808194.sHtML
Wap.sjzxtzx.cN/Article/808196.sHtML
Wap.sjzxtzx.cN/Article/808198.sHtML
Wap.sjzxtzx.cN/Article/808200.sHtML
Wap.sjzxtzx.cN/Article/808202.sHtML
Wap.sjzxtzx.cN/Article/808204.sHtML
Wap.sjzxtzx.cN/Article/808206.sHtML
Wap.sjzxtzx.cN/Article/808208.sHtML
Wap.sjzxtzx.cN/Article/808210.sHtML
Wap.sjzxtzx.cN/Article/808212.sHtML
Wap.sjzxtzx.cN/Article/808214.sHtML
Wap.sjzxtzx.cN/Article/808216.sHtML
Wap.sjzxtzx.cN/Article/808218.sHtML
Wap.sjzxtzx.cN/Article/808220.sHtML
Wap.sjzxtzx.cN/Article/808222.sHtML
Wap.sjzxtzx.cN/Article/808224.sHtML
Wap.sjzxtzx.cN/Article/808226.sHtML
Wap.sjzxtzx.cN/Article/808228.sHtML
Wap.sjzxtzx.cN/Article/808230.sHtML
Wap.sjzxtzx.cN/Article/808232.sHtML
Wap.sjzxtzx.cN/Article/808234.sHtML
Wap.sjzxtzx.cN/Article/808236.sHtML
Wap.sjzxtzx.cN/Article/808238.sHtML
Wap.sjzxtzx.cN/Article/808240.sHtML
Wap.sjzxtzx.cN/Article/808242.sHtML
Wap.sjzxtzx.cN/Article/808244.sHtML
Wap.sjzxtzx.cN/Article/808246.sHtML
Wap.sjzxtzx.cN/Article/808248.sHtML
Wap.sjzxtzx.cN/Article/808250.sHtML
Wap.sjzxtzx.cN/Article/808252.sHtML
Wap.sjzxtzx.cN/Article/808254.sHtML
Wap.sjzxtzx.cN/Article/808256.sHtML
Wap.sjzxtzx.cN/Article/808258.sHtML
Wap.sjzxtzx.cN/Article/808260.sHtML
Wap.sjzxtzx.cN/Article/808262.sHtML
Wap.sjzxtzx.cN/Article/808264.sHtML
Wap.sjzxtzx.cN/Article/808266.sHtML
Wap.sjzxtzx.cN/Article/808268.sHtML
Wap.sjzxtzx.cN/Article/808270.sHtML
Wap.sjzxtzx.cN/Article/808272.sHtML
Wap.sjzxtzx.cN/Article/808274.sHtML
Wap.sjzxtzx.cN/Article/808276.sHtML
Wap.sjzxtzx.cN/Article/808278.sHtML
Wap.sjzxtzx.cN/Article/808280.sHtML
Wap.sjzxtzx.cN/Article/808282.sHtML
Wap.sjzxtzx.cN/Article/808284.sHtML
Wap.sjzxtzx.cN/Article/808286.sHtML
Wap.sjzxtzx.cN/Article/808288.sHtML
Wap.sjzxtzx.cN/Article/808290.sHtML
Wap.sjzxtzx.cN/Article/808292.sHtML
Wap.sjzxtzx.cN/Article/808294.sHtML
Wap.sjzxtzx.cN/Article/808296.sHtML
Wap.sjzxtzx.cN/Article/808298.sHtML
Wap.sjzxtzx.cN/Article/808300.sHtML
Wap.sjzxtzx.cN/Article/808302.sHtML
Wap.sjzxtzx.cN/Article/808304.sHtML
Wap.sjzxtzx.cN/Article/808306.sHtML
Wap.sjzxtzx.cN/Article/808308.sHtML
Wap.sjzxtzx.cN/Article/808310.sHtML
Wap.sjzxtzx.cN/Article/808312.sHtML
Wap.sjzxtzx.cN/Article/808314.sHtML
Wap.sjzxtzx.cN/Article/808316.sHtML
Wap.sjzxtzx.cN/Article/808318.sHtML
Wap.sjzxtzx.cN/Article/808320.sHtML
Wap.sjzxtzx.cN/Article/808322.sHtML
Wap.sjzxtzx.cN/Article/808324.sHtML
Wap.sjzxtzx.cN/Article/808326.sHtML
Wap.sjzxtzx.cN/Article/808328.sHtML
Wap.sjzxtzx.cN/Article/808330.sHtML
Wap.sjzxtzx.cN/Article/808332.sHtML
Wap.sjzxtzx.cN/Article/808334.sHtML
Wap.sjzxtzx.cN/Article/808336.sHtML
Wap.sjzxtzx.cN/Article/808338.sHtML
Wap.sjzxtzx.cN/Article/808340.sHtML
Wap.sjzxtzx.cN/Article/808342.sHtML
Wap.sjzxtzx.cN/Article/808344.sHtML
Wap.sjzxtzx.cN/Article/808346.sHtML
Wap.sjzxtzx.cN/Article/808348.sHtML
Wap.sjzxtzx.cN/Article/808350.sHtML
Wap.sjzxtzx.cN/Article/808352.sHtML
Wap.sjzxtzx.cN/Article/808354.sHtML
Wap.sjzxtzx.cN/Article/808356.sHtML
Wap.sjzxtzx.cN/Article/808358.sHtML
Wap.sjzxtzx.cN/Article/808360.sHtML
Wap.sjzxtzx.cN/Article/808362.sHtML
Wap.sjzxtzx.cN/Article/808364.sHtML
Wap.sjzxtzx.cN/Article/808366.sHtML
Wap.sjzxtzx.cN/Article/808368.sHtML
Wap.sjzxtzx.cN/Article/808370.sHtML
Wap.sjzxtzx.cN/Article/808372.sHtML
Wap.sjzxtzx.cN/Article/808374.sHtML
Wap.sjzxtzx.cN/Article/808376.sHtML
Wap.sjzxtzx.cN/Article/808378.sHtML
Wap.sjzxtzx.cN/Article/808380.sHtML
Wap.sjzxtzx.cN/Article/808382.sHtML
Wap.sjzxtzx.cN/Article/808384.sHtML
Wap.sjzxtzx.cN/Article/808386.sHtML
Wap.sjzxtzx.cN/Article/808388.sHtML
Wap.sjzxtzx.cN/Article/808390.sHtML
Wap.sjzxtzx.cN/Article/808392.sHtML
Wap.sjzxtzx.cN/Article/808394.sHtML
Wap.sjzxtzx.cN/Article/808396.sHtML
Wap.sjzxtzx.cN/Article/808398.sHtML
Wap.sjzxtzx.cN/Article/808400.sHtML
Wap.sjzxtzx.cN/Article/808402.sHtML
Wap.sjzxtzx.cN/Article/808404.sHtML
Wap.sjzxtzx.cN/Article/808406.sHtML
Wap.sjzxtzx.cN/Article/808408.sHtML
Wap.sjzxtzx.cN/Article/808410.sHtML
Wap.sjzxtzx.cN/Article/808412.sHtML
Wap.sjzxtzx.cN/Article/808414.sHtML
Wap.sjzxtzx.cN/Article/808416.sHtML
Wap.sjzxtzx.cN/Article/808418.sHtML
Wap.sjzxtzx.cN/Article/808420.sHtML
Wap.sjzxtzx.cN/Article/808422.sHtML
Wap.sjzxtzx.cN/Article/808424.sHtML
Wap.sjzxtzx.cN/Article/808426.sHtML
Wap.sjzxtzx.cN/Article/808428.sHtML
Wap.sjzxtzx.cN/Article/808430.sHtML
Wap.sjzxtzx.cN/Article/808432.sHtML
Wap.sjzxtzx.cN/Article/808434.sHtML
Wap.sjzxtzx.cN/Article/808436.sHtML
Wap.sjzxtzx.cN/Article/808438.sHtML
Wap.sjzxtzx.cN/Article/808440.sHtML
Wap.sjzxtzx.cN/Article/808442.sHtML
Wap.sjzxtzx.cN/Article/808444.sHtML
Wap.sjzxtzx.cN/Article/808446.sHtML
Wap.sjzxtzx.cN/Article/808448.sHtML
Wap.sjzxtzx.cN/Article/808450.sHtML
Wap.sjzxtzx.cN/Article/808452.sHtML
Wap.sjzxtzx.cN/Article/808454.sHtML
Wap.sjzxtzx.cN/Article/808456.sHtML
Wap.sjzxtzx.cN/Article/808458.sHtML
Wap.sjzxtzx.cN/Article/808460.sHtML
Wap.sjzxtzx.cN/Article/808462.sHtML
Wap.sjzxtzx.cN/Article/808464.sHtML
Wap.sjzxtzx.cN/Article/808466.sHtML
Wap.sjzxtzx.cN/Article/808468.sHtML
Wap.sjzxtzx.cN/Article/808470.sHtML
Wap.sjzxtzx.cN/Article/808472.sHtML
Wap.sjzxtzx.cN/Article/808474.sHtML
Wap.sjzxtzx.cN/Article/808476.sHtML
Wap.sjzxtzx.cN/Article/808478.sHtML
Wap.sjzxtzx.cN/Article/808480.sHtML
Wap.sjzxtzx.cN/Article/808482.sHtML
Wap.sjzxtzx.cN/Article/808484.sHtML
Wap.sjzxtzx.cN/Article/808486.sHtML
Wap.sjzxtzx.cN/Article/808488.sHtML
Wap.sjzxtzx.cN/Article/808490.sHtML
Wap.sjzxtzx.cN/Article/808492.sHtML
Wap.sjzxtzx.cN/Article/808494.sHtML
Wap.sjzxtzx.cN/Article/808496.sHtML
Wap.sjzxtzx.cN/Article/808498.sHtML
Wap.sjzxtzx.cN/Article/808500.sHtML
Wap.sjzxtzx.cN/Article/808502.sHtML
Wap.sjzxtzx.cN/Article/808504.sHtML
Wap.sjzxtzx.cN/Article/808506.sHtML
Wap.sjzxtzx.cN/Article/808508.sHtML
Wap.sjzxtzx.cN/Article/808510.sHtML
Wap.sjzxtzx.cN/Article/808512.sHtML
Wap.sjzxtzx.cN/Article/808514.sHtML
Wap.sjzxtzx.cN/Article/808516.sHtML
Wap.sjzxtzx.cN/Article/808518.sHtML
Wap.sjzxtzx.cN/Article/808520.sHtML
Wap.sjzxtzx.cN/Article/808522.sHtML
Wap.sjzxtzx.cN/Article/808524.sHtML
Wap.sjzxtzx.cN/Article/808526.sHtML
Wap.sjzxtzx.cN/Article/808528.sHtML
Wap.sjzxtzx.cN/Article/808530.sHtML
Wap.sjzxtzx.cN/Article/808532.sHtML
Wap.sjzxtzx.cN/Article/808534.sHtML
Wap.sjzxtzx.cN/Article/808536.sHtML
Wap.sjzxtzx.cN/Article/808538.sHtML
Wap.sjzxtzx.cN/Article/808540.sHtML
Wap.sjzxtzx.cN/Article/808542.sHtML
Wap.sjzxtzx.cN/Article/808544.sHtML
Wap.sjzxtzx.cN/Article/808546.sHtML
Wap.sjzxtzx.cN/Article/808548.sHtML
Wap.sjzxtzx.cN/Article/808550.sHtML
Wap.sjzxtzx.cN/Article/808552.sHtML
Wap.sjzxtzx.cN/Article/808554.sHtML
Wap.sjzxtzx.cN/Article/808556.sHtML
Wap.sjzxtzx.cN/Article/808558.sHtML
Wap.sjzxtzx.cN/Article/808560.sHtML
Wap.sjzxtzx.cN/Article/808562.sHtML
Wap.sjzxtzx.cN/Article/808564.sHtML
Wap.sjzxtzx.cN/Article/808566.sHtML
Wap.sjzxtzx.cN/Article/808568.sHtML
Wap.sjzxtzx.cN/Article/808570.sHtML
Wap.sjzxtzx.cN/Article/808572.sHtML
Wap.sjzxtzx.cN/Article/808574.sHtML
Wap.sjzxtzx.cN/Article/808576.sHtML
Wap.sjzxtzx.cN/Article/808578.sHtML
Wap.sjzxtzx.cN/Article/808580.sHtML
Wap.sjzxtzx.cN/Article/808582.sHtML
Wap.sjzxtzx.cN/Article/808584.sHtML
Wap.sjzxtzx.cN/Article/808586.sHtML
Wap.sjzxtzx.cN/Article/808588.sHtML
Wap.sjzxtzx.cN/Article/808590.sHtML
Wap.sjzxtzx.cN/Article/808592.sHtML
Wap.sjzxtzx.cN/Article/808594.sHtML
Wap.sjzxtzx.cN/Article/808596.sHtML
Wap.sjzxtzx.cN/Article/808598.sHtML
Wap.sjzxtzx.cN/Article/808600.sHtML
Wap.sjzxtzx.cN/Article/808602.sHtML
Wap.sjzxtzx.cN/Article/808604.sHtML
Wap.sjzxtzx.cN/Article/808606.sHtML
Wap.sjzxtzx.cN/Article/808608.sHtML
Wap.sjzxtzx.cN/Article/808610.sHtML
Wap.sjzxtzx.cN/Article/808612.sHtML
Wap.sjzxtzx.cN/Article/808614.sHtML
Wap.sjzxtzx.cN/Article/808616.sHtML
Wap.sjzxtzx.cN/Article/808618.sHtML
Wap.sjzxtzx.cN/Article/808620.sHtML
Wap.sjzxtzx.cN/Article/808622.sHtML
Wap.sjzxtzx.cN/Article/808624.sHtML
Wap.sjzxtzx.cN/Article/808626.sHtML
Wap.sjzxtzx.cN/Article/808628.sHtML
Wap.sjzxtzx.cN/Article/808630.sHtML
Wap.sjzxtzx.cN/Article/808632.sHtML
Wap.sjzxtzx.cN/Article/808634.sHtML
Wap.sjzxtzx.cN/Article/808636.sHtML
Wap.sjzxtzx.cN/Article/808638.sHtML
Wap.sjzxtzx.cN/Article/808640.sHtML
Wap.sjzxtzx.cN/Article/808642.sHtML
Wap.sjzxtzx.cN/Article/808644.sHtML
Wap.sjzxtzx.cN/Article/808646.sHtML
Wap.sjzxtzx.cN/Article/808648.sHtML
Wap.sjzxtzx.cN/Article/808650.sHtML
Wap.sjzxtzx.cN/Article/808652.sHtML
Wap.sjzxtzx.cN/Article/808654.sHtML
Wap.sjzxtzx.cN/Article/808656.sHtML
Wap.sjzxtzx.cN/Article/808658.sHtML
Wap.sjzxtzx.cN/Article/808660.sHtML
Wap.sjzxtzx.cN/Article/808662.sHtML
Wap.sjzxtzx.cN/Article/808664.sHtML
Wap.sjzxtzx.cN/Article/808666.sHtML
Wap.sjzxtzx.cN/Article/808668.sHtML
Wap.sjzxtzx.cN/Article/808670.sHtML
Wap.sjzxtzx.cN/Article/808672.sHtML
Wap.sjzxtzx.cN/Article/808674.sHtML
Wap.sjzxtzx.cN/Article/808676.sHtML
Wap.sjzxtzx.cN/Article/808678.sHtML
Wap.sjzxtzx.cN/Article/808680.sHtML
Wap.sjzxtzx.cN/Article/808682.sHtML
Wap.sjzxtzx.cN/Article/808684.sHtML
Wap.sjzxtzx.cN/Article/808686.sHtML
Wap.sjzxtzx.cN/Article/808688.sHtML
Wap.sjzxtzx.cN/Article/808690.sHtML
Wap.sjzxtzx.cN/Article/808692.sHtML
Wap.sjzxtzx.cN/Article/808694.sHtML
Wap.sjzxtzx.cN/Article/808696.sHtML