感谢您抽出

阅读本文

一.Playwright简介

Playwright是微软开源的新一代自动化测试工具。类似于主流的Selenium

Playwright为现代Web应用程序提供可靠的端到端的自动化测试。

任何浏览器 •任何平台 • 一个API跨浏览器。

Playwright支持所有现代渲染引擎,包括 ChromiumWebKitFirefox

跨平台。在WindowsLinuxmacOS 上进行本地或CI、无头或有头测试。

跨语言。在TypeScriptJavaScriptPython.NETJava中使用Playwright API

测试移动网络。适用于AndroidMobile SafariGoogle Chrome原生移动仿真。相同的渲染引擎适用于您的桌面和云端。

二.PlayWright安装

官方文档:https://playwright.dev/docs/intro

1.安装方式一

pip install pytest-playwright

2.安装方式二

若安装方式一无法安装(安装过程下载慢,或超时等异常),则采用安装方式二

pip install --index-url http://mirrors.aliyun.com/pypi/simple pytest-playwright --trusted-host mirrors.aliyun.com

3.安装默认浏览器

Playwright默认下载ChromiumFirefoxWebKit浏览器。

playwright install

Windows下载浏览器

4.安装指定浏览器

playwright install firefox

5.浏览器安装目录

Mac浏览器安装目录:/Users/${user}/Library/Caches/ms-playwright/

三.启动和关闭浏览器

1.启动Chrome

browser = playwright.chromium.launch(headless=False,channel="chrome")

2.关闭浏览器

browser.close()

四.举个例子

1.code demo

import re
import timefrom playwright.sync_api import Page,expect# pycharm终端执行pytest --headed
# playwright默认是以无头模式运行的
def test_first_playwright(page: Page):# 打开浏览器并跳转到百度首页page.goto("https://www.baidu.com/")# 预期结果是否包含标题:百度一下expect(page).to_have_title(re.compile("百度一下"))# 元素定位text为新闻get_started = page.locator("text=新闻")# 点击跳转到新闻页get_started.click()time.sleep(5)

2.效果图

五.同步和异步

Playwright支持API的两种编写模式:同步和异步。如果你的项目使用asyncio,你应该使用async API,否则使用sync API

默认情况下,Playwright以非GUI模式运行浏览器。要查看浏览器UI,请在启动浏览器时传参数headless=False。还可以使用slow_mo来减慢执行速度,如slow_mo=50

1.同步模式

import timeimport pytest
from playwright.sync_api import sync_playwright"""
使用同步模式打开博客园,并断言标题
"""
def test_sync_playwright():with sync_playwright() as p:# headless=False表示使用GUI模式运行browser = p.chromium.launch(headless=False)page = browser.new_page()page.goto("https://www.cnblogs.com/mrjade/")time.sleep(5)print(page.title())// 截图并保存在当前目录下page.screenshot(path="cnblogs_ishot.png")browser.close()if __name__ == '__main__':pytest.main("-v","test_sync_playwright.py")

2.异步模式

import asyncio
import timefrom playwright.async_api import async_playwright"""
1.使用异步模式分别打开chromium/firefox/webkit浏览器
2.浏览器输入https://www.cnblogs.com/mrjade/
3.截图保存在ishot目录下
"""async def main():async with async_playwright() as p:for browser_type in [p.chromium, p.firefox, p.webkit]:browser = await browser_type.launch(headless=False)page = await browser.new_page()await page.goto('https://www.cnblogs.com/mrjade/')await page.screenshot(path=f'ishot/screenshot-{browser_type.name}.png')time.sleep(5)print(await page.title())await browser.close()asyncio.run(main())

,时长00:30

六.版本说明

目前支持的浏览器版本如下

  • Chromium 105.0.5195.19

  • Mozilla Firefox 103.0

  • WebKit 16.0

  • Google Chrome 104

  • Microsoft Edge 104

七.自动等待

Playwright在执行操作之前对元素执行一系列可操作性检查,以确保这些操作按预期运行。它会自动等待所有相关检查通过,然后才执行请求的操作。如果所需的检查未在给定范围内通过timeout,则操作失败并显示TimeoutError。检查列表如下:

八.断言

Playwright提供了断言以及方便的方法来创建断言,这些断言将等待并重试,直到满足预期的条件。默认情况下,断言超时设置为5秒。

expect(page.locator(".status")).to_have_text("Submitted")
  • expect(locator).not_to_be_checked(**kwargs)

  • expect(locator).not_to_be_disabled(**kwargs)

  • expect(locator).not_to_be_editable(**kwargs)

  • expect(locator).not_to_be_empty(**kwargs)

  • expect(locator).not_to_be_enabled(**kwargs)

  • expect(locator).not_to_be_focused(**kwargs)

  • expect(locator).not_to_be_hidden(**kwargs)

  • expect(locator).not_to_be_visible(**kwargs)

  • expect(locator).not_to_contain_text(expected, **kwargs)

  • expect(locator).not_to_have_attribute(name, value, **kwargs)

  • expect(locator).not_to_have_class(expected, **kwargs)

  • expect(locator).not_to_have_count(count, **kwargs)

  • expect(locator).not_to_have_css(name, value, **kwargs)

  • expect(locator).not_to_have_id(id, **kwargs)

  • expect(locator).not_to_have_js_property(name, value, **kwargs)

  • expect(locator).not_to_have_text(expected, **kwargs)

  • expect(locator).not_to_have_value(value, **kwargs)

  • expect(locator).not_to_have_values(values, **kwargs)

  • expect(locator).to_be_checked(**kwargs)

  • expect(locator).to_be_disabled(**kwargs)

  • expect(locator).to_be_editable(**kwargs)

  • expect(locator).to_be_empty(**kwargs)

  • expect(locator).to_be_enabled(**kwargs)

  • expect(locator).to_be_focused(**kwargs)

  • expect(locator).to_be_hidden(**kwargs)

  • expect(locator).to_be_visible(**kwargs)

  • expect(locator).to_contain_text(expected, **kwargs)

  • expect(locator).to_have_attribute(name, value, **kwargs)

  • expect(locator).to_have_class(expected, **kwargs)

  • expect(locator).to_have_count(count, **kwargs)

  • expect(locator).to_have_css(name, value, **kwargs)

  • expect(locator).to_have_id(id, **kwargs)

  • expect(locator).to_have_js_property(name, value, **kwargs)

  • expect(locator).to_have_text(expected, **kwargs)

  • expect(locator).to_have_value(value, **kwargs)

  • expect(locator).to_have_values(values, **kwargs)

  • expect(page).not_to_have_title(title_or_reg_exp, **kwargs)

  • expect(page).not_to_have_url(url_or_reg_exp, **kwargs)

  • expect(page).to_have_title(title_or_reg_exp, **kwargs)

  • expect(page).to_have_url(url_or_reg_exp, **kwargs)

  • expect(api_response).not_to_be_ok()

  • expect(api_response).to_be_ok()

由于时间和精力有限,今天就分享到这里,咱下次接着分享


 最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。

2022年新一代最强开源UI自动化测试神器(一)相关推荐

  1. 2022年新一代最强开源UI自动化测试神器 ——Playwright(三)

    感谢您抽出 . . 阅读本文 一.playwright 脚本调试 Playwright提供了degbug工具,用于脚本调试. Playwright Inspector是一个GUI工具,可帮助修改和调试 ...

  2. ADB投屏_最强开源投屏神器,跨平台电脑控制+文件传输——scrcpy

    介绍 scrcpy是一个开源的跨平台投屏神器,支持Linux.Windows以及MacOS(本文介绍的scrapy不是Python下的那个爬虫框架),scrcpy在Github上非常的受欢迎,Star ...

  3. pythonui自动化测试平台_django+appium实现UI自动化测试平台(开源部分,可定制开发)...

    背景 UI自动化,在进行的过程中,难免会遇到平台化, 在实际的工作中,有的领导也会想要实现自动化测试的平台化.自动化平台化后,有了更为实际的成果, 在做UI自动化,很想吧现在的自动化的框架进行平台化, ...

  4. python开源自动化测试平台_Airtest:网易游戏开源的跨平台 UI 自动化测试框架

    Airtest 跨平台的UI自动化测试框架,适用于游戏和App 快速开始 Airtest是一个跨平台的UI自动化测试框架,适用于游戏和App.目前支持Windows和Android平台,iOS支持正在 ...

  5. 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...

  6. 阿里疯传,手把手教你如何从0开始开展UI自动化测试?

    如何进行一个Web项目的UI自动化测试,首先需要建立一个自动化测试团队.理想情况下,该团队由四个人组成,即测试和开发工程师.中高级自动化测试工程师和两名初级自动化工程师.在非理想情况下,可能只需要一个 ...

  7. APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...

  8. UI自动化测试是什么?什么项目适合做UI自动化测试

    目录 前言 1.about自动化测试 2.自动化测试分层 3.什么样的项目适合自动化测试 4.常见的自动化测试工具简介 5.UI自动化测试要不要做? 6.什么样的项目更适合做自动化测试 结语 前言 本 ...

  9. 2022 年InfoWorld 精选最佳开源软件

    2022 年InfoWorld 精选最佳开源软件. InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响 ...

最新文章

  1. 添加打印机还显示脱机_win7系统电脑连接打印机后显示脱机怎么办
  2. 图解:消息传输的架构模式
  3. liunx tar安装mysql_在Linux下,安装Mysql(tar)
  4. 有关接口和抽象类的问题
  5. python决策树sklearn_请问python中的sklearn中决策树使用的是哪一种算法呢?
  6. 父类指针访问子类成员变量
  7. Centos7下实现多虚拟机互信
  8. php连接excel表格数据类型,TP5 中使用PHPExcel 导出导入数据到excel表格
  9. 【转载】python几种经典排序方法的实现
  10. crontab -e 报错(E518: Unknown option: foldenable)
  11. 关于IDEA编辑器运行测试方法时无法在控制台进行输入的问题
  12. 你就要清楚的知道,自己日后的“盈利模式”是什么?
  13. 职称评审英语计算机不作要求,安徽:基层专业技术人员评职称外语计算机不作要求...
  14. 回文数判断python五位数_Python【习题】回文数:判断一个数是否是回文数
  15. 图解深度学习-梯度下降法优化器可视化(SGD, Momentum,Adam, Adagrad and RMSProp)
  16. Unity立体几何 点到直线距离计算
  17. Spring Cloud与Dubbo详细对比
  18. 中移物联网2018笔试题
  19. 基于Impala的网易有数BI查询优化总结
  20. SLCP验厂辅导,发布网关是SLCP系统中用于数据托管和共享的关键角色

热门文章

  1. rx560d linux 图形设计,关系steam linux版游戏 使用体会和个人建议
  2. tr 去除空行_tr的用法
  3. linux下连接window xp共享HP打印机
  4. 记一次使用mybatisplus新增功能出现Could not set property ‘id‘ of class XXXXXXXX
  5. 淘宝/天猫上传图片到淘宝 API 返回值说明(upload_img)
  6. 5G LAN是什么?5G LAN商用实现工业物联网5G无线接入
  7. 数据分析(以美国选民的总统喜好为例)
  8. “流量水果”——牛油果的营销骗局
  9. Excel去除表格密码保护
  10. android 注册广播代码(备用)