我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Playwright快速上手指南(入门教程)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Playwright快速上手指南(入门教程)

Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作。作为针对 Python 语言纯自动化的工具,在回归测试中可更快的实现自动化。

1. 为什么选择Playwright

1.1 Playwright的优势

(1) Selenium需要通过WebDriver操作浏览器;Playwright通过开发者工具与浏览器交互,安装简洁,不需要安装各种Driver。

(2) Playwright几乎支持所有语言,且不依赖于各种Driver,通过调用内置浏览器所以启动速度更快。

(3) Selenium基于HTTP协议(单向通讯),Playwright基于Websocket(双向通讯)可自动获取浏览器实际情况。

(4) Playwright为自动等待。

  • 等待元素出现(定位元素时,自动等待30s,等待时间可以自定义,单位毫秒)
  • 等待事件发生

1.2 已知局限性

(1) Playwright不支持旧版Microsoft Edge或IE11。支持新的Microsoft Edge(在Chromium上);所以对浏览器版本有硬性要求的项目不适用。

(2) 需要SSL证书进行访问的网站可能无法录制,该过程需要单独定位编写。

(3) 移动端测试是通过桌面浏览器来模拟移动设备(相当于自带模拟器),无法控制真机。

2. Playwright使用

2.1 安装

(1)安装Playwright依赖库(Playwright支持Async\Await语法,故需要Python3.7+)


pip install playwright

(2)安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)


python -m playwright install

2.2 自动录制

(1)命令行键入 --help 看到所有可后接选项


python -m playwright codegen --help

(2)从起始页为xingzheai.cn开始录制


python -m playwright codegen https://xingzheai.cn/

(3)打开xingzheai.cn,用Chromium驱动,将结果保存为my.py的python文件


python -m playwright codegen --target python -o 'my.py' -b chromium https://xingzheai.cn/

 -target:规定生成脚本的语言,有JS和Python两种,默认为Python
-b:指定浏览器驱动
-o:将录制的脚本保存到一个文件

2.3 定制化编写

(1)元素定位

  • 选择单个元素:querySelector(engine=body)
  • 选择多个元素:querySelectorAll(engine=body)
  • 选择单个元素,并且自动等待:waitForSelector(engine=body)

By的8种定位方式,实际为4种

  • id、name、tag name、class name(java和pythona将该4种都归为CSS)
  • xpath、link text、partial link text、css selector

W3C标准规定的webDriver协议为5种定位方式

  • CSS、Link text、Partial link text、Tag name、XPath

Playwright将选择器汇总为3种

  • CSS、XPATH(支持逻辑表达式和函数)、TEXT

(2)选择器规则

  • CSS: ID选择器、类选择器、元素选择器、属性选择器、通配选择器、层次选择器。
  • XPath: XML路径语言,通过“路径标识符”,导航XML文档的,在类XML种(HTML)也可以使用。
  • Text: 结构化内容(html,xml,json)使用模糊匹配(忽略大小写,忽略前后空格,搜索子字符串)及精确匹配、非结构化内容使用正则匹配。

(3)元素常用操作

  • 下拉选择框:selectOpion、value、labei、index
  • 文件上传:setInputFiles、单个文件、多个文件、拖放上传
  • 鼠标点击:click、dbclick
  • 鼠标拖动:down、up
  • 鼠标移动:move
  • 触摸屏幕:tag
  • 键盘按键:press
  • 截屏、录屏:screenshot、recordVideo

2.4 网络拦截(Mock接口),示例如下:


page = context.newPage()
def Whether_intercept() -> bool:
    return True  #进行拦截
# return False #不进行拦截

def handler(route:Route):
    print(route.request.url)
    #正常访问
    # route.continue_()
    #拒绝访问
    # route.abort("网络拦截")
    # 重定向到非目标地址
    route.fulfill(
        status=302,
        headers={
            'Location' : "https://xingzheai.cn/"
        }
    )
page.route(Whether_intercept,handler)

2.5 同步执行,示例如下:


#依次打开三个浏览器,前往行者官网,截图后退出。
from playwright import sync_playwright with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
         # 指定为有头模式,Ture为无头模式
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('https://xingzheai.cn/')
        # 等待页面加载完全后截图
        page.waitForSelector("text=智能内容审核")
        page.screenshot(path=f'example-{browser_type.name}.png')
        browser.close()

2.6 异步执行,示例如下:


#同时进行三个浏览器操作
import asyncio
from playwright import async_playwright
async def main():
 async with async_playwright() as p:
     for browser_type in [p.chromium, p.firefox, p.webkit]:
          browser = await browser_type.launch()
         page = await browser.newPage()
         await page.goto('/file/upload/202211/12/dejwfiboyve.jpg')
          await browser.close()
         asyncio.get_event_loop().run_until_complete(main())

2.7 Pytest结合,示例如下:

安装:pip install pytest-playwright


def test_playwright(page):
    page.goto("https://xingzheai.cn/")
    with page.expect_popup() as popup_info:         
 page.click('text="智能内容审核"')         
    assert "智能内容审核" == element.textContent()

2.8 移动端操作,示例如下:

目前支持模拟机型较少, 参照:仿真设备列表


from time import sleep
from playwright import sync_playwright  
with sync_playwright() as p:
    GalaxyS5 = p.devices['Galaxy S5']
    browser = p.chromium.launch(headless=False)
    context = browser.newContext(**GalaxyS5)
    page = context.newPage()
    page.goto('https://xingzheai.cn/')
    page.click('text="智能内容审核"')
    # 截图
    # page.screenshot(path='colosseum-GalaxyS5.png')
    sleep(10)
    browser.close()

3. 总结

Playwright作为新一代自动化测试工具,相较于Selenium不论是易用性,还是实用性都得到了全方位的提升。做到了简约而不简单,相信使用该工具可以帮助我们提升做自动化的工作效率。

到此这篇关于Playwright快速上手指南(入门教程)的文章就介绍到这了,更多相关Playwright入门内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Playwright快速上手指南(入门教程)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PyQT安装教程:快速入门指南

PyQT安装教程:快速入门指南PyQT是一个强大的Python界面开发库,可以用于创建各种用户界面应用程序。本文将为大家提供PyQT的安装教程和快速入门指南,并提供具体的代码示例,帮助大家快速上手。第一步:安装PyQT要安装PyQT,
PyQT安装教程:快速入门指南
2024-02-22

php CodeIgniter最佳教程:快速入门指南

掌握 PHP CodeIgniter 框架的基本知识,通过本教程快速入门,了解其强大功能并开始构建动态 web 应用程序。
php CodeIgniter最佳教程:快速入门指南
2024-02-14

Python入门教程(二)Python快速上手

这篇文章主要介绍了Python入门教程(二)Python快速上手,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
2023-05-14

快速上手pandas库:导入指南

pandas库快速入门:导入篇概述:在数据分析和数据处理中,pandas是一个强大且高效的Python库。它提供了许多数据结构和函数,能够方便地进行数据的导入、处理和分析。本文将介绍如何导入pandas库,并使用具体的代码示例介绍其基本用
快速上手pandas库:导入指南
2024-01-24

SaltStack配置管理入门教程:快速上手

SaltStack是一款开源的配置管理工具,可实现对服务器的远程控制、配置和维护,适用于各种规模的IT环境。本教程将介绍SaltStack的基本配置和使用,帮助您快速上手。
SaltStack配置管理入门教程:快速上手
2024-02-08

nginx openresty 快速入门指南

NginxOpenResty是一个基于Nginx的高性能Web平台,集成了Lua脚本语言和扩展。其快速入门指南包含了安装、配置、编写Lua脚本和使用ngx_lua模块等步骤。NginxOpenResty以其高性能、可扩展性和易用性而备受推崇,适用于从简单的Web服务器到复杂的API网关和微服务等多种应用程序。
nginx openresty 快速入门指南
2024-04-02

入门级教程:在CentOS上搭建web服务器的快速指南

在CentOS上搭建web服务器可以使用Apache或Nginx。以下是使用Apache搭建web服务器的快速指南:1. 更新系统:在终端中运行以下命令,以确保系统已更新到最新版本:```sudo yum update```2. 安装Apa
2023-10-09

阿里云服务器控制面板教程新手快速入门指南

本文将提供阿里云服务器控制面板的详细教程,以帮助新手快速入门。我们将解释如何在阿里云服务器上创建新用户,如何登录阿里云服务器,如何在服务器上安装操作系统,以及如何管理服务器上的应用和服务。步骤一:创建新用户首先,我们需要登录到阿里云控制台。在控制台首页,找到并点击“管理控制台”按钮,然后在下拉菜单中选择“服务器管
阿里云服务器控制面板教程新手快速入门指南
2023-11-13

Python语法快速入门指南

Python语言与Perl,C和Java等语言有许多相似之处。但是,也存在一些差异。 在本章中我们将来学习Python的基础语法,让你快速学会Python编程。 第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Py
2022-06-04

sklearn 快速入门教程

1. 获取数据1.1 导入sklearn数据集  sklearn中包含了大量的优质的数据集,在你学习机器学习的过程中,你可以通过使用这些数据集实现出不同的模型,从而提高你的动手实践能力,同时这个过程也可以加深你对理论知识的理解和把握。(这一
2023-01-31

Windows8操作系统新手的快速入门指南

几一条龙前,微软公布了Windows 8的升级和零售价格,让人意外的是,此次价格很有吸引力:从现有系统升级的话仅需40美元,折合人民币大约250左右;若是赶在明年2月前购买零售版本的Windows 8专业版,也仅需70美元(450人民币)。
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录