前言

看到这个文章,有的同学会说:

六哥,你为啥不早早就写完python系列的文章。

因为有徒弟需要吧,如果你也想学自学,那这篇文章,可以说是我们结缘一起学习的开始吧!

如果对你有用,建议收藏和转发!

Playwright是什么?

微软开源自动化测试工具Playwright,支持主流浏览器,包括:Chrome、Firefox、Safari 等,同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以结合 主流测试框架使用,并且支持浏览器端的自动化脚本录制等功能。

特点:

  • 跨浏览器:Playwright 支持所有现代渲染引擎,包括Chromium、WebKit 和 Firefox;
  • 跨平台:在 Windows、Linux 和 MacOS 上进行本地或 CI、无头或有头测试;
  • 跨语言:在 TypeScript、JavaScript、Python、.NET、Java 中使用Playwright API;
  • 测试移动网络:适用于 Android 和 Mobile Safari 的 Google Chrome 原生移动仿真。相同的渲染引擎适用于您的桌面和云端。

官网地址:

https://playwright.dev

GitHub地址:

https://github.com/microsoft/playwright

通俗的讲:

就是一款主流的自动化测试工具,可以跨平台、跨语言、开源、支持分布式、拥有成熟的社区及学习文档,主要用于接口和web自动化测试。

开发环境搭建

1、系统要求:

  • Python 3.8 or higher. Python 3.8 或更高版本。
  • Windows 10+, Windows Server 2016+ or Windows Subsystem for Linux (WSL). Windows 10+、Windows Server 2016+ 或适用于 Linux 的 Windows 子系统 (WSL)。
  • MacOS 12 Monterey, MacOS 13 Ventura, or MacOS 14 Sonoma. MacOS 12 Monterey、MacOS 13 Ventura 或 MacOS 14 Sonoma。
  • Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04. Debian 11、Debian 12、Ubuntu 20.04 或 Ubuntu 22.04。

2、安装依赖

安装 Pytest 插件:

pip install pytest-playwright

安装所需的浏览器:

playwright install

3、示例程序

打开首页并截图,示例代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2024/06/18 22:26
# @Author  : longrong.lang
# @FileName: test_demo.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
# @Motto:你只管努力,剩下的交给天意.
import re
from playwright.sync_api import Page, expect def test_has_title(page: Page):
    page.goto("https://playwright.dev/")     # Expect a title "to contain" a substring.
    expect(page).to_have_title(re.compile("Playwright")) def test_get_started_link(page: Page):
    page.goto("https://playwright.dev/")     # Click the get started link.
    page.get_by_role("link", name="Get started").click()     # Expects page to have a heading with the name of Installation.
    expect(page.get_by_role("heading", name="Installation")).to_be_visible()

运行结果:

image.png

说明: 默认情况下,测试将在 chromium 上运行。这可以通过 CLI 选项进行配置。测试在无外设模式下运行,这意味着在运行测试时不会打开浏览器 UI。测试结果和测试日志将显示在终端中。

4、更新Playwright

pip install pytest-playwright playwright -U

脚本录制

和很多自动化测试工具一样,Playwright也是可以录制并生成脚本的。 那么接下来将演示如何进行脚本的录制(我个人是不喜欢录制的),此处操作只为有需要的人。 由于之前做的electron桌面应用环境开发,依赖node.js运行环境,而Playwright也是完美支持node. js,那我将用node环境给大家演示。

1、如何录制

使用Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

输入如下命令,开启录制 如下所示:

playwright codegen  https://www.cnblogs.com/longronglang (测试的网址)

在target中选择你需要的语言和框架:

这里以Pytest为例,如下所示:

image.png

操作中会有页面相关定位提示,点击结束录制,并复制生成脚本,如下所示:

关于元素定位,可以用自带的验证工具验证元素定位表达式,如下图所示:

image.png

2、生成脚本

生成代码如下所示:

# -*- coding: utf-8 -*-
# @Time    : 2024/06/18 22:26
# @Author  : longrong.lang
# @FileName: test_demo.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
# @Motto:你只管努力,剩下的交给天意.
import re
from playwright.sync_api import Page, expect def test_example(page: Page) -> None:
    page.goto("https://www.cnblogs.com/longronglang")
    page.locator("#main-header div").nth(1).click()
    page.locator(".onOff").click()
    page.locator("#main-header div").nth(1).click()
    page.locator("div:nth-child(6)").first.click()
    page.get_by_text("久曲健的测试窝").click()
    page.get_by_text("久曲健的测试窝").click(button="right")
    page.get_by_text("我知道了").click()
    page.get_by_role("heading", name="青春的土壤中,只有记忆是潮湿的。").click()
    page.get_by_text("久曲健的测试窝").click()
    page.get_by_text("久曲健的测试窝").click()
    page.get_by_text("久曲健的测试窝").click()
    page.locator("#main-header div").nth(1).click()
    expect(page.locator("#homeTopTitle")).to_contain_text("久曲健的测试窝")
    page.get_by_role("heading", name="青春的土壤中,只有记忆是潮湿的。").click()

说明: 从上面可以看到,录制的工具也很好用,具体用法参考https://playwright.dev/python/docs/codegen-intro

回放脚本如下所示:

image.png

这个框架执行速度有些慢,首次运行比较耗时,其他感觉还好。

到此关于Playwright开发环境搭建及脚本的录制已完成,有兴趣的同学可以自行尝试。

写在最后

有的时候,你的一时想法,真的强烈建议你记录下来,如果觉得它是有意义的,那么就什么都不要去想,干就完了!

最后,分享一句李尚龙的一句话,你只是看起来很努力,你所谓的稳定不过是浪费生命!

形式上的努力,并没有什么用,打卡什么的也不过于自我安慰,真正的强者,已经都开始行动起来了,不是吗?

如果你苦于找不到同学一起学习来,来加我好友,我们有学习群,来一起当同学好么!


【Playwright+Python】系列教程(一)环境搭建及脚本录制的更多相关文章

  1. 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制

    一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...

  2. Selenium----Selenium简单介绍以及Selenium IDE环境搭建,脚本录制

    1.selenium简单介绍 心得:作为一个新手开始了解这个工具,打算从录制脚本开始学习,“录制,看,学习,写”,总结网友说得打算先使用Selenium IDE录制学习,再使用Selenium RC开 ...

  3. 跨平台移动开发phonegap/cordova 3.3全系列教程-开发环境搭建

    操作系统:windwos xp 1.   安装JDK 打开如下网站下载JDK http://www.oracle.com/technetwork/java/javase/downloads/index ...

  4. Django Python MySQL Linux 开发环境搭建

    Django Python MySQL Linux 开发环境搭建 1.安装Python 进行Python开发,首先必须安装python,对于linux 或者Mac 用户,python已经预装. 在命令 ...

  5. 【转】RHadoop实践系列之一:Hadoop环境搭建

    RHadoop实践系列之一:Hadoop环境搭建 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来 ...

  6. MyBatis学习系列一之环境搭建

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 学习一个新的知识,首先做一个简单的例子使用一下,然后再逐步深入.MyBat ...

  7. MyBatis实例教程--开发环境搭建

    MyBatis实例教程--开发环境搭建 准备工作: 1.mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包 ...

  8. Python基础学习之环境搭建

    Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...

  9. 【系列】Python编程思想(1):Python简介与开发环境搭建

    李宁老师的 开始学习.   本系列文章深入介绍了Python的各种技术,堪称是目前最全的Python教程.主要目的是让读者可以了解Python的各种核心技术,包括各种Python函数库.本教程使用Py ...

  10. Python 简明教程 --- 1,搭建Python 环境

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 人生苦短,我用Python. -- 龟叔T恤 Python 是一门解释型语言,所以要想运行Pytho ...

随机推荐

  1. [FE] uni-app 动态改变 navigationBarTitleText 导航标题

    改导航文字: uni.setNavigationBarTitle({ title: 'xx' }); 改 tabBar 文字: uni.setTabBarItem({ index: 0, text: ...

  2. WPF 获取本机所有字体拿到每个字符的宽度和高度

    本文主要采用 GlyphTypeface 类尝试获取每个字符的宽度和高度的值,尽管这个方法和最终 WPF 布局使用的文本的宽度和高度是不相同的,但是依然可以作为参考 获取系统字体文件夹的文件 系统字体 ...

  3. 2019-8-31-dotnet-使用-Environment.FailFast-结束程序

    title author date CreateTime categories dotnet 使用 Environment.FailFast 结束程序 lindexi 2019-08-31 16:55 ...

  4. jqGrid--动态列

    前台部门 <select id="xuenian" name="xuenian" class="form-control">&l ...

  5. 12.prometheus监控之Domain域名过期监控

    一.域名过期时间监控 域名的监控通过domain_exporter来完成 domain_exporter:https://github.com/caarlos0/domain_exporter/rel ...

  6. K8s应用---Service代理和kube-proxy转发(9)

    一.k8s为什么要用Service四层代理 1.1 四层负载均衡Service: 概念.原理解读 1.pod ip 经常变化,service 是 pod 的代理,我们客户端访问,只需要访问 servi ...

  7. SpringCloud + Seata1.5.0(使用docker安装配置Seata;数据存储mysql、配置中心与注册中心nacos)

    1.seata介绍 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分 ...

  8. [Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。

    前言 最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用. 如果你是很懂CMake的话,ui_xx.h的文件目录在 $ 下 然后除了有关这个ui_xx.h,还 ...

  9. 安装XMind如何安装到指定目录

    在Win10系统上安装XMind,发现安装完成之后,XMind被安装到了C盘.由于C盘是系统盘,这让人很不爽.XMind在安装过程中也没有提供安装路径选择,而是点击安装程序之后,就一路开始安装到C盘. ...

  10. lodash已死?Radash库方法介绍及源码解析 —— 异步方法篇

    写在前面 tips:点赞 + 收藏 = 学会! 我们前面已经介绍了 radash 的相关信息和所有 Array 相关方法,详情可前往主页查看. 本篇我们继续介绍radash中异步相关的方法. 所有方法 ...