2022年新一代最强开源UI自动化测试神器(一)
感谢您抽出
阅读本文
一.Playwright简介
Playwright
是微软开源的新一代自动化测试工具。类似于主流的Selenium
。
Playwright
为现代Web
应用程序提供可靠的端到端的自动化测试。
任何浏览器 •任何平台 • 一个API跨浏览器。
Playwright
支持所有现代渲染引擎,包括 Chromium
、WebKit
和Firefox
。
跨平台。在Windows
、Linux
和macOS
上进行本地或CI
、无头或有头测试。
跨语言。在TypeScript
、JavaScript
、Python
、.NET
、Java
中使用Playwright API
。
测试移动网络。适用于Android
和Mobile Safari
的Google 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
默认下载Chromium
、Firefox
和WebKit
浏览器。
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自动化测试神器(一)相关推荐
- 2022年新一代最强开源UI自动化测试神器 ——Playwright(三)
感谢您抽出 . . 阅读本文 一.playwright 脚本调试 Playwright提供了degbug工具,用于脚本调试. Playwright Inspector是一个GUI工具,可帮助修改和调试 ...
- ADB投屏_最强开源投屏神器,跨平台电脑控制+文件传输——scrcpy
介绍 scrcpy是一个开源的跨平台投屏神器,支持Linux.Windows以及MacOS(本文介绍的scrapy不是Python下的那个爬虫框架),scrcpy在Github上非常的受欢迎,Star ...
- pythonui自动化测试平台_django+appium实现UI自动化测试平台(开源部分,可定制开发)...
背景 UI自动化,在进行的过程中,难免会遇到平台化, 在实际的工作中,有的领导也会想要实现自动化测试的平台化.自动化平台化后,有了更为实际的成果, 在做UI自动化,很想吧现在的自动化的框架进行平台化, ...
- python开源自动化测试平台_Airtest:网易游戏开源的跨平台 UI 自动化测试框架
Airtest 跨平台的UI自动化测试框架,适用于游戏和App 快速开始 Airtest是一个跨平台的UI自动化测试框架,适用于游戏和App.目前支持Windows和Android平台,iOS支持正在 ...
- 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...
- 阿里疯传,手把手教你如何从0开始开展UI自动化测试?
如何进行一个Web项目的UI自动化测试,首先需要建立一个自动化测试团队.理想情况下,该团队由四个人组成,即测试和开发工程师.中高级自动化测试工程师和两名初级自动化工程师.在非理想情况下,可能只需要一个 ...
- APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...
- UI自动化测试是什么?什么项目适合做UI自动化测试
目录 前言 1.about自动化测试 2.自动化测试分层 3.什么样的项目适合自动化测试 4.常见的自动化测试工具简介 5.UI自动化测试要不要做? 6.什么样的项目更适合做自动化测试 结语 前言 本 ...
- 2022 年InfoWorld 精选最佳开源软件
2022 年InfoWorld 精选最佳开源软件. InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响 ...
最新文章
- 添加打印机还显示脱机_win7系统电脑连接打印机后显示脱机怎么办
- 图解:消息传输的架构模式
- liunx tar安装mysql_在Linux下,安装Mysql(tar)
- 有关接口和抽象类的问题
- python决策树sklearn_请问python中的sklearn中决策树使用的是哪一种算法呢?
- 父类指针访问子类成员变量
- Centos7下实现多虚拟机互信
- php连接excel表格数据类型,TP5 中使用PHPExcel 导出导入数据到excel表格
- 【转载】python几种经典排序方法的实现
- crontab -e 报错(E518: Unknown option: foldenable)
- 关于IDEA编辑器运行测试方法时无法在控制台进行输入的问题
- 你就要清楚的知道,自己日后的“盈利模式”是什么?
- 职称评审英语计算机不作要求,安徽:基层专业技术人员评职称外语计算机不作要求...
- 回文数判断python五位数_Python【习题】回文数:判断一个数是否是回文数
- 图解深度学习-梯度下降法优化器可视化(SGD, Momentum,Adam, Adagrad and RMSProp)
- Unity立体几何 点到直线距离计算
- Spring Cloud与Dubbo详细对比
- 中移物联网2018笔试题
- 基于Impala的网易有数BI查询优化总结
- SLCP验厂辅导,发布网关是SLCP系统中用于数据托管和共享的关键角色
热门文章
- rx560d linux 图形设计,关系steam linux版游戏 使用体会和个人建议
- tr 去除空行_tr的用法
- linux下连接window xp共享HP打印机
- 记一次使用mybatisplus新增功能出现Could not set property ‘id‘ of class XXXXXXXX
- 淘宝/天猫上传图片到淘宝 API 返回值说明(upload_img)
- 5G LAN是什么?5G LAN商用实现工业物联网5G无线接入
- 数据分析(以美国选民的总统喜好为例)
- “流量水果”——牛油果的营销骗局
- Excel去除表格密码保护
- android 注册广播代码(备用)