自动化测试-Cypress快速入门

news2024/11/17 14:25:15

cypress介绍

  • 一个前端自动化测试工具
  • 不同于其他只能测试 UI 层的前端测试工具,Cypress 允许编写所有类型的测试,覆盖了测试金字塔模型的所有测试类型**【界面测试,集成测试,单元测试】**
  • Cypress 测试代码和应用程序均运行在由 Cypress 全权控制的浏览器中
  • 且它们运行在同一个Domain 下的不同 iframe 中,所以 Cypress 的测试代码可以直接操作 DOM、Window Objects、Local Storages而无须通过网络访问
  • Cypress 架构不使用 Selenium 或 Webdriver,在运行速度、可靠性测试、测试结果一致性上均有良好保障

安装cypress

1、安装nodejs
http://nodejs.cn/download/,下载msi后直接安装就可以使用了
在这里插入图片描述

2、进入想要安装cypress的目录cmd下执行
npm init
会生成package.json后
执行 npm install cypress --save-dev 安装cypress
package.json 文件这个文件也可以自己创建,通常存在于项目的根目录下,它定义了这个项目所需要的各种模块、配置信息(如:名称、版本、依赖、脚本等)

打开cypress

进入 Cypress安装目录\node_modules.bin 目录,输入
npm run cypress:open
正确的打开方式
在这里插入图片描述

选择E2E,会扫描电脑上的浏览器。
在这里插入图片描述

自动打开浏览器,打开了一个服务
在这里插入图片描述

示例项目用例执行

在cypress里,每一个js文件就是一个测试集合。
选择scaffold exampl specs,会自动给项目添加示例,这些js文件被添加至项目e2e目录下
在这里插入图片描述

选择一条单击进入即开始执行
在这里插入图片描述

点击每一条用例可查看详细,右侧会自动显示dom截图。

可以修改js文件,测试用例会自动重新加载并执行,如下修改了用例名称。
在这里插入图片描述

元素定位

cypress用的是css选择器方式定位
advanced-examples里介绍了很多元素的操作
在这里插入图片描述
4213eed1a97&title=&width=598.9333333333333)

#id 选择器

通过元素的 id 属性来定位
cy.get(“#main1”).click()

.class 选择器

通过元素的 class 属性来定位
cy.get(“.btn”).click()

属性选择器

通过元素的各种属性来定位
cy.get(“button[id=‘main2’]”).click()

css选择器写法:https://www.cnblogs.com/poloyy/p/12629662.html
也可以在元素页面右键复制selector
在这里插入图片描述

查找元素

以下都用advanced项目中的代码为例

  • get(selector)

该用法用来在 DOM 树中查找 selector 对应的 DOM 元素
在这里插入图片描述

  • .find(selector)

该定位方法用来在 DOM 树中搜索已被定位到的元素的后代,并将匹配到的元素返回为一个新的 jQuery 对象【注意,不是返回元素对象】
在这里插入图片描述

这里先找到了form,又找它的子节点

  • .contains()

该方法可用来获取包含指定文本的 DOM 元素
两种语法格式
.contains(content) .contains(selector, content)

元素操作

https://example.cypress.io/commands/actions
如果熟悉selenium,这些元素操作都是比较相似的,详细可查看上面链接

输入.type

cy.get('.action-email')
  .type('fake@email.com').should('have.value', 'fake@email.com')

type也支持输入快捷键,键盘上下左右键,组合键

清空 .clear()

cy.get('.action-clear').type('Clear this text')
  .should('have.value', 'Clear this text')
  .clear()
  .should('have.value', '')

提交表单.submit()

cy.get('.action-form')
  .find('[type="text"]').type('HALFOFF')
cy.get('.action-form').submit()
  .next().should('contain', 'Your form has been submitted!')

点击元素.click()

cy.get('#action-canvas').click() //默认点击元素中心
cy.get('#action-canvas').click('bottomRight') 
cy.get('#action-canvas').click(80, 75) //点击坐标
// click multiple elements by passing multiple: true 点击多个元素
cy.get('.action-labels>.label').click({ multiple: true })

双击.dblclick()

cy.get('.action-div').dblclick()

右击.rightclick()

cy.get('.action-div').rightclick()

勾选checkbox .check()

cy.get('.action-checkboxes [type="checkbox"]').not('[disabled]')
  .check().should('be.checked')

取消勾选.uncheck()

cy.get('.action-check [type="checkbox"]')
  .not('[disabled]')
  .uncheck().should('not.be.checked')

选择option.select()

cy.get('.action-select')
  .should('have.value', '--Select a fruit--')

滑动到视图.scrollIntoView()

cy.get('#scroll-horizontal button')
  .should('not.be.visible')

滑动滑块.trigger()

在这里插入图片描述

cy.get('.trigger-input-range')
  .invoke('val', 25)
  .trigger('change')
  .get('input[type=range]').siblings('p')
  .should('have.text', '25')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拦截器与过滤器

什么是过滤器 过滤器 Filter 基于 Servlet 实现,过滤器的主要应用场景是对字符编码、跨域等问题进行过滤。Servlet 的工作原理是拦截配置好的客户端请求,然后对 Request 和 Response 进行处理。Filter 过滤器随着 web 应用的启动而启动,只初…

电商订单对接系列-第1章-整体设计

背景 电商行业在处理订单的业务时,初创一般是直接通过电商后台导出表格,然后根据其来跟进进销存。在单量到了一定规模时,业务场景会变得复杂,如促销套餐,拆单,合单等,一般会购买市面上的…

Android -- 每日一问:介绍一下你经常浏览的 Android 技术网站

经典回答 做为一个合格的 Android 开发者,我想官方的 developer 站点是必上的,有什么网站能比官方更全面和权威呢。而且 Android Developer 站点上还有很多指导性的文章写得很不错,也不用担心英文不好,因为基本上官方都翻译了中文…

一文轻松图解搞懂Elasticsearch原理!

ES 的集群模式和 kafka 很像,kafka 又和 redis 的集群模式很像。总之就是相互借鉴! 不管你用没用过 ES,今天我们一起聊聊它。就当扩展大家的知识广度了! 认识倒排索引 「正排索引 VS 倒排索引:」 正排索引 VS 倒排索…

【PyTorch深度学习项目实战100例】—— 基于FastText实现情感二分类任务 | 第78例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

【Pandas入门教程】如何重塑表格布局

如何重塑表格布局 来源:Pandas官网:https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 笔记托管:https://gitee.com/DingJiaxiong/machine-learning-study 文章目录如何重塑表格布局导包数据准备【1】对表行进行排…

3.11.1、虚拟局域网 VLAN 概述

以太网交换机工作在数据链路层(也包括物理层) 使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。 随着交换式以太网规模的扩大,广播域相应扩大。 巨大的广播域会带来很多弊端: 广播风暴难以管理和维护潜在…

LVGL学习笔记2 - 对象

目录 1. 创建对象 2. 设置大小 3. 设置位置 4. 设置对齐方式 5. 对象的父子关系 6. 其他 前面的例子中,一个矩形创建都是用到obj的函数,obj即是指对象。LVGL的基本要素是对象,实现了屏幕上组件的基本属性,包括大小、坐标、父…

SQLite数据库-学生管理系统(2.0)

SQLite数据库-学生管理系统 1.要求 布局文件 --------View层Activity文件---------Controller层Helper文件:建立数据库和表,版本更新Dao层:对数据库表中数据增删改查操作Entity:数据库在项目中的类,主要用于定义与数据…

短视频创业:大部分人都误解了豆荚的作用,掌握正确方法你就悟了

短视频,豆荚是避不过的功能,那么豆荚的作用和要不要投豆荚呢? 对于一般人来说,可能会觉得那投豆荚就是向买粉丝、买播放量、买数据的这么一个付费工具 对于一个专业的短视频运营来说,它其实是一个撬动自然流量的工具…

GROMACS模拟分析-自由能形貌图的绘制

自由能形貌(free energy landscape,FEL)表征了模拟过程中蛋白质的自由能变化。自由能形貌图一般通过两个描述体系特征的量来进行绘制,例如RMSD和Rg,也有文献中用主成分分析PC1和PC2绘制。本文以RMSD和Rg两个特征量绘制…

C++ 实现字符串查找 KMP算法

前言 众所周知,字符串查找的应用范围非常广,网页上有各式各样的浏览器搜索,再到编程需要的vsCode或vsStudio都自带了搜索功能;一个查找算法的优劣可以直接影响用户的搜索体验如何但鉴于暴力搜索算法的O(m * n)复杂度,…

精选测试面试题

一、Web自动化测试 1.Selenium中hidden或者是display = none的元素是否可以定位到? 不能,可以写JavaScript将标签中的hidden先改为0,再定位元素 2.Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以…

图文并茂的介绍用word生成一个很智能的目录

文章目录前期准备设置各级目录的字体样式准备一个新的页面(装目录)大工告成!作为一名程序员,写代码自然是我们的强项,除了写写代码使用计算机的能力也渐渐成为了考察我们的指标,今天我们介绍一个办公小技巧…

【图神经网络】Pytorch图神经网络库——PyG异构图学习

PyG异构图学习举个例子创建异构图Utility函数异构图Transformations创建异构图神经网络自动转换GNN模型使用异构卷积包装器部署现有的异构算子异构图采样参考资料大量真实世界数据集存储为异构图,这促使Pytorch Geometric(PyG)中引入专门的功…

Java项目:Springboot实现的一个简单博客管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台管理系统,包括博主与游客两种角色; 博主角色包含以下功能: 博主登录,发博客,博主可以删除博客…

使用yolov5 v7.0进行实例分割

1. 介绍 U版yolov5最新推出了v7.0版本,新增了基于yolov5进行实例分割的代码。作者提到yolov5 v7.0实现的实例分割是超越了所有的SOTA模型的效果,是目前为止速度和精度最高的。 2. 代码的使用 2.1 Setup 克隆GitHub仓库,安装依赖项,检查PyTorch和GPU。 git clone http…

GEO芯片数据分析更新(补富集分析与WGCNA)

GEO数据挖掘,表达芯片分析 举例:王同学近期拟通过生物信息学相关软件与数据库来探讨女性非抽烟者的非小细胞肺癌预后相关的显著性基因及潜在的治疗靶点,他在NCBI上查询到了1套芯片数据GSE19804。请帮助他完成该项目的设计与分析。 上一篇博…

Linux系统基础——内核初始化

内核初始化 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和所有图片来源于这个专栏。 1 背景知识 BootLoader阶段后,cpu从实模式转换成保护模式。有了更强的寻址能力后,内核也已经加载到内存了,系统内…

2. 做一个极简 UI 库之Toast 组件

效果 API 设计 先设计好了 API 写起来代码才不会犯迷糊 Toast(message: string; otherParams?: ToastParams): ToastReturninterface ToastParams {time?: number;appendTo?: string | HTMLElement;dangerouslyUseHTMLString?: boolean; }interface ToastReturn {close():v…