【Playwright+Python】系列教程(一)环境搭建及脚本录制

playwright,python · 浏览次数 : 4

小编点评

一、前言 1. 作者提到,有些同学会问为什么没有早点完成Python系列文章,原因是有徒弟需要学习。 2. 文章表示,如果这篇文章对读者有用,建议收藏和转发。 二、Playwright是什么? 1. Playwright是一个由微软开源的自动化测试工具。 2. 支持主流浏览器,如Chrome、Firefox、Safari等。 3. 支持无头模式和有头模式运行。 4. 提供同步和异步API。 5. 可以与主流测试框架结合使用。 6. 支持浏览器端的自动化脚本录制等功能。 三、开发环境搭建 1. 系统要求:Python 3.8或更高版本,Windows 10+、Windows Server 2016+或适用于Linux的Windows子系统(WSL)、MacOS 12 Monterey、MacOS 13 Ventura或MacOS 14 Sonoma、Debian 11、Debian 12、Ubuntu 20.04或Ubuntu 22.04。 2. 安装依赖:使用pip安装pytest-playwright插件,以及所需的浏览器。 3. 示例程序:展示了一个简单的示例程序,包括页面访问、标题检查和无头模式运行。 4. 更新Playwright:使用pip安装pytest-playwright和playwright的更新。 四、脚本录制 1. 使用Playwright的录制功能,可以自动记录操作并生成代码脚本。 2. 脚本录制工具可以帮助开发者快速上手Playwright。 3. 录制完成后,可以根据生成的代码进行修改和优化。 五、结语 1. 强调了行动的重要性,鼓励读者付诸实践。 2. 提供了一个学习群,欢迎有兴趣的同学加入共同学习。 总的来说,本文详细介绍了Playwright自动化测试工具的开发环境搭建、脚本录制以及使用方法,旨在帮助读者更好地理解和应用这一强大的工具。

正文

一、前言

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

六哥,你为啥不早早就写完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

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 (测试的网址)

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

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

image.png

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

image.png

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

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

image.png

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

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

五、写在最后

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

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

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

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


与【Playwright+Python】系列教程(一)环境搭建及脚本录制相似的内容:

【Playwright+Python】系列教程(一)环境搭建及脚本录制

一、前言 看到这个文章,有的同学会说: 六哥,你为啥不早早就写完python系列的文章。 因为有徒弟需要吧,如果你也想学自学,那这篇文章,可以说是我们结缘一起学习的开始吧! 如果对你有用,建议收藏和转发! 二、Playwright是什么? 微软开源自动化测试工具Playwright,支持主流浏览器,

【Playwright+Python】系列教程(五)元素定位

一、常见元素定位 定位器是 Playwright 自动等待和重试能力的核心部分。简而言之,定位器代表了一种随时在页面上查找元素的方法,以下是常用的内置定位器。 1、按角色定位 按显式和隐式可访问性属性进行定位 语法:page.get_by_role() Dom结构示例1: 示例代码1: page.g

【Playwright+Python】系列教程(四)Pytest 插件在Playwright中的使用

一、命令行使用详解 使用Pytest插件在Playwright 中来编写端到端的测试。 1、命令行执行测试 pytest --browser webkit --headed 2、使用 pytest.ini 文件配置 内容如下: [pytest] # Run firefox with UI addop

【Playwright+Python】系列教程(二)手把手带你写一个脚本

一、如何使用代理方式打开网页 在 playwright.chromium.launch() 中传入 proxy 参数即可,示例代码如下: 1、同步写法: from playwright.sync_api import sync_playwright proxy = {'server': 'http:

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-1-环境准备与搭建

1.简介 Python+Playwright系列的文章还没有结束,就有好的小伙伴或者童鞋们私信公众号留言,问宏哥什么时候出Java语言的Playwright的自动化测试文章。本来想趁热打铁将Python+Playwright完结后,就开始Java语言的Playwright的自动化测试文章,但是好多人

《最新出炉》系列初窥篇-Python+Playwright自动化测试-1-环境准备与搭建

1.简介 有很多人私信留言宏哥问能不能介绍一下Playwright这款自动化神器的相关知识,现在网上的资料太少了。其实在各大博客和公众号也看到过其相关的介绍和讲解。要不就是不全面、不系统,要不就是系统全面但是人家是收费的。当然了宏哥接下来也可能介绍的不全面或者不系统,能力有限望大家理解。 2.Pla

《最新出炉》系列初窥篇-Python+Playwright自动化测试-2-playwright的API及其他知识

1.简介 上一篇宏哥已经将Python+Playwright的环境搭建好了,而且也简单的演示了一下三款浏览器的启动和关闭,是不是很简单啊。今天主要是把一篇的中的代码进行一次详细的注释,然后说一下playwright的API和其他相关知识点。那么首先将上一篇中的代码进行一下详细的解释。 2.代码解释

《最新出炉》系列初窥篇-Python+Playwright自动化测试-3-离线搭建playwright环境

1.简介 有些小伙伴或者童鞋们私信留言说自己是在公司局域网办公,或者公司为了安全对网络管控比较严格(尤其是一些大的国企、央企),总之就是一句话无法连到外网去在线下载,宏哥刚看到留言时觉得这问题还留言问啊,你找个有网的电脑下载好安装包然后安装就可以用了。(第一种情况及解决办法:带要搭建环境的电脑到有网

《最新出炉》系列初窥篇-Python+Playwright自动化测试-4-playwright等待浅析

1.简介 在介绍selenium的时候,宏哥也介绍过等待,是因为在某些元素出现后,才可以进行操作。有时候我们自己忘记添加等待时间后,查了半天代码确定就是没有问题,奇怪的就是获取不到元素。然后搞了好久,或者经过别人的提示才恍然大悟没有添加等待时间。而playwright为了避免我们犯这么low的错误,

《最新出炉》系列初窥篇-Python+Playwright自动化测试-5-元素定位大法-上篇

1.简介 说到元素定位,小伙伴或者童鞋们肯定会首先想到 selenium 的八大元素定位大法。同理Playwright也有自己的元素定位的方法。今天就给小伙伴或者童鞋们讲解和分享一下Playwright的元素定位方法。 宏哥对UI自动化的理解:定位元素 >操作元素 >断言。 2.定位器 定位器(Lo