自动化神器 Playwright 的 Web 自动化测试解决方案

这篇具有很好参考价值的文章主要介绍了自动化神器 Playwright 的 Web 自动化测试解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

1. 主流框架的认识

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

  • 总结:
    • 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化,因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。
    • 后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三个框架都是基于JavaScript开发的,且都不支持Python,所以使用率并没有很高。
    • playwright则是综合了上述框架的优点,提供了很好的体验,将来可能成为流行的趋势。

2. Playwright认识

  • Playwright简介

    • 2020年,微软(Microsoft)开源了一个名为Playwright的工具,与Selenium一样入门简单,支持多语言(Python、Java、Node.js、.NET),支持多浏览器(Chromium、Firefox、Webkit),可跨平台(Windwos、Linux、Mac OS)
    • Playwright同时支持接口自动化和UI自动化,为现代web应用提供了可靠的端到端的测试能力。
  • Playwright优势

    • 1)自动等待功能让自动化更可靠
    • 2)自动追踪:可以很方便地配置重试策略,自动的追踪结果,以截图和录屏的方式进行记录。
    • 3)断言机制:会根据网络环境进行自动断言,直到满足某种条件为止。
    • 4)异步执行:Playwright基于socket进行双向通讯,支持同步与异步执行两种方式
    • 5)可运行多页仿真场景:Playwright是通过上下文管理浏览器,相当于每一个测试用例都会创建一个独立的上下文,浏览器的上下文其实就是一个全新的浏览器,这种方式的好处就是在提速的同时又实现测试与测试之间的隔离,使得测试结果更加准确,所以可以实现并行执行。
    • 6)强大的工具集:还我们提供了强大的工具集,例如:脚本录制工具codegen、脚本编写以及调试工具playwright等

3. Playwright环境搭建

  • Python环境:python解释器+IDE工具,不知道怎么安装的可参考: python3.4 + pycharm 环境安装 + pycharm 使用

  • Playwright环境:

    • 安装Playwright:pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

  • 安装内置浏览器(chromium,firefox,webkit):playwright install

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

4. Playwright入门实战

1)脚本录制
  • 案例1:实现Web ui自动化,打开浏览器,访问测试派(商城首页),点击登录后在进行登录操作(输入用户名、密码,点击登录按钮)
  • 操作步骤:
    • 第一步:pycharm--Terminal中输入命令:playwright codegen,会自动打开浏览器和Playwright Inspector工具,Playwright Inspector工具自动开启录制功能
    • 第二步:在打开的浏览器中进行相关的操作,如访问地址、点击或输入操作
    • 第三步:操作完成后,在Playwright Inspector中点击Record停止录制,然后复制代码即可
from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://175.178.53.95:8081/")
    page.get_by_text("登录").click()
    page.get_by_placeholder("用户名/邮箱/手机号").click()
    page.get_by_placeholder("用户名/邮箱/手机号").fill("kemi")
    page.get_by_placeholder("用户名/邮箱/手机号").press("Tab")
    page.get_by_placeholder("密码").fill("123456")
    page.pause()  # 断点调试功能
    page.get_by_role("button", name="登录").click()

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

2)录制工具快速定位元素
  • 如果我自己写代码,需要定位元素,通过Playwright Inspector工具的Pick locator可以快速获取元素定位的信息,具体操作如下截图:

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

  • Playwright支持两大类元素定位方式,包括:
  • 1)get_by方式
    • get_by_id: 通过元素的 id 属性来查找元素,例如:element = page.get_by_id("my-id")
    • get_by_name: 通过元素的 name 属性来查找元素,例如:element = page.get_by_name("my-name")
    • get_by_text: 通过元素的文本内容来查找元素,例如:element = page.get_by_text("Submit")
    • get_by_title: 通过元素的 title 属性来查找元素,例如:element = page.get_by_title("my-title")
    • get_by_placeholder: 通过元素的 placeholder 属性来查找元素,例如:element = page.get_by_placeholder("my-placeholder")
    • get_by_selector: 通过 CSS 选择器来查找元素,例如:element = page.get_by_selector("#submit-button")
    • get_by_xpath: 通过 XPath 表达式来查找元素,例如:element = page.get_by_xpath("//div[@class='my-class']")
    • get_by_label: 根据label属性值查找元素,类似于HTML中的label标签和对应的for属性。
    • get_by_role: 通过角色方式定位元素,例如:element = page.get_by_role("button", name="Submit")
  • 2)page.locator方式
    • 通过ID定位元素:使用page.locator("#element-id")page.locator('id=element-id')定位。
    • 通过CSS选择器定位元素:使用page.locator("css=selector")定位。例如:element = page.locator("button#submit-button")
    • 通过XPath表达式定位元素:使用page.locator("xpath=expression")定位。例如:element = page.locator("//button[@id='submit-button']")
    • 通过名称定位元素:使用page.locator("name=element-name")定位。
    • 通过链接文本定位元素:使用page.locator("text=link-text")定位。
    • 通过部分链接文本定位元素:使用page.locator("partial_text=partial-link-text")定位。
    • 通过元素属性定位元素:使用page.locator("[attribute=value]")定位。
    • 通过标签名定位元素:使用page.locator("tag=tag-name")定位。

4. Pytest+Allure+Playwright完整项目演示

1)脚本转为测试用例
  • 案例需求:将上面测试派(商城首页)的登录操作转为测试用例
  • 操作步骤:
    • 第一步:pycharm--Terminal中输入命令:playwright codegen,会自动打开浏览器和Playwright Inspector工具,Playwright Inspector工具自动开启录制功能
    • 第二步:在打开的浏览器中进行相关的操作,如访问地址、点击或输入操作
    • 第三步:操作完成后,在Playwright Inspector中点击Record停止录制
    • 第四步:在Target中选择Python下的pytest,就会自动化将录制的代码转为测试用例,然后复制代码即可。具体操作如下截图所示:

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

  • 代码如下:
 
from playwright.sync_api import Page, expect

def test_example(page: Page) -> None:
    page.goto("http://175.178.53.95:8081/")
    page.get_by_text("登录").click()
    page.get_by_placeholder("用户名/邮箱/手机号").click()
    page.get_by_placeholder("用户名/邮箱/手机号").fill("kemi")
    page.get_by_placeholder("用户名/邮箱/手机号").press("Tab")
    page.get_by_placeholder("密码").fill("123456")
    page.get_by_role("button", name="登录").click()
  • 执行用例前必须先安装插件,否则会报错,因为用例只有核心的业务操作,没有浏览器、上下文、页面的初始化,装了插件后会自动做这些初始化的操作,从而执行用例不会报错。命令:pip install pytest-playwright

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化

2)数据驱动
  • 集合pytest的parametrize实现数据驱动
import pytest
from playwright.sync_api import Page, expect

# 测试用例数据
case_data = [{'caseid':1,'username':'kemi123', 'password':'kemi123'},
             {'caseid':2,'username':'zhangsan', 'password':'123456'},
             {'caseid':3,'username':'lisi', 'password':'123456'}]

# 数据驱动
@pytest.mark.parametrize('case', case_data)
def test_example(page: Page,case) -> None:
    username = case['username']
    password = case['password']

    page.goto("http://175.178.53.95:8081/")
    page.get_by_text("登录").click()
    page.get_by_placeholder("用户名/邮箱/手机号").click()
    page.get_by_placeholder("用户名/邮箱/手机号").fill(username)
    page.get_by_placeholder("用户名/邮箱/手机号").press("Tab")
    page.get_by_placeholder("密码").fill(password)
    page.get_by_role("button", name="登录").click()
    page.screenshot(path=f"images/login/登录{case['caseid']}.png")  # 截图保存到指定位置

3)报告显示
  • 通过pytest执行用例后,通过命令生成报告:allure serve outputs/allure,查看报告显示,截图如下:

自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化



自动化神器 Playwright 的 Web 自动化测试解决方案,python UI 环境部署,自动化,playwright自动化文章来源地址https://www.toymoban.com/news/detail-785644.html

到了这里,关于自动化神器 Playwright 的 Web 自动化测试解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化神器Playwright快速上手指南

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

    2024年02月06日
    浏览(48)
  • 微软出品自动化神器【Playwright+Java】系列(一) 之 环境搭建及脚本录制

    半年前,偶然在视频号刷到某机构正在直播讲解 Playwright 框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了。 读到这,你可能就去百度这东西到底是干啥用的? 细心的同学,可能会发现,关于 Playwright 基于

    2024年02月05日
    浏览(44)
  • 让测试人头疼的web自动化之验证码识别彻底解决方案

    对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动验证的。诸如此类的验证码,对我们的系统增加了安全性的保障,但是对于

    2024年01月17日
    浏览(35)
  • 基于Playwright自动化测试部署方案

    基于playwright框架,搭建了自动化测试项目,在服务器上使用Docker起容器跑镜像,镜像内容基于playwright的官方镜像,并向其中移入了host文件,以便切换测试用例运行所在的环境(测试/线上环境)。 引入测试用例的管理后台,方便测试用例与测试报告的管理。管理后台中可以

    2024年02月13日
    浏览(42)
  • 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新页面、录制、页面对象模式操作

    写在前面 关于 Playwright 系列的文章,真的很久没有写了,今天一个不小心官方 API 部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习。 API部分 多线程 直白点说就是多线程下 Playwright 的使用,示例代码如下: 重定向到指定页面 跳转到指定页面,示例代码

    2024年01月20日
    浏览(36)
  • 最强自动化测试框架Playwright(9)- 下载文件

    对于页面下载的每个附件,都会发出 page.on(“download”) 事件。 下载开始后,将发出下载事件。下载完成后,下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系统路径和有效负载流。 关闭浏览器上下文时,将

    2024年02月13日
    浏览(52)
  • 最强自动化测试框架Playwright(20)- iframe

    一个页面可以附加一个或多个 Frame 对象。每个页面都有一个主框架,并且假定页面级交互(如)在主框架中运行。 click 使用 iframe 时,可以创建一个框架定位器,该定位器将进入 iframe 并允许选择该 iframe 中的元素。 上面代码,先定位frame,然后定位frame里的元素,并对元素

    2024年02月13日
    浏览(39)
  • 最强自动化测试框架Playwright(29)-文件选择对象

    FileChooser对象通过page.on(\\\"filechoose\\\")事件监听。 如下代码实现点击百度搜图按钮,上传文件进行搜索。 为文件选择器设置要上传的文件路径 file_chooser.set_files(files) file_chooser.set_files(files, **kwargs) 返回文件选择器关联的input元素 file_chooser.element 返回文件选择器是否接收多个文件

    2024年02月12日
    浏览(39)
  • 最强自动化测试框架Playwright(21)-测试生成器inspector

    运行该命令时,将打开两个窗口,一个浏览器窗口,可以在其中与要测试的网站进行交互,另一个是Playwright Inspector窗口,可以在其中记录测试,然后将其复制到编辑器中。 使用该命令运行测试生成器,后面为要为其生成测试的网站的 URL。URL 是可选的 运行命令并在浏览器窗

    2024年02月13日
    浏览(48)
  • Playwright已经是目前最好的测试自动化工具了吗?

    作者观点 :很长时间以来,Selenium是QA工程师寻求测试自动化解决方案的首选测试框架。它能够测试任何浏览器(这在IE浏览器的统治时期尤其重要)和任何平台。然而,现在看来,那个时代已经过去了。 今天,大多数web应用程序都是用现代前端框架开发的,如React、Angular或

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包