Cypress的哪些坑

简介: 大家好,我是阿萨。昨天讲解了Cypress的那些独特的地方。今天我们来学习下Cypress 的那些坑。

一. 异步


Cypress执行的代码是异步的,异步是啥意思呢? 就是不按照代码顺序去执行代码,它随机运行的,所以很有可能后写的代码先执行。先写的代码后执行。


首先看如下代码:


const btn=cy.get('#btn)
btn.find('btn2').click()


如果在Cypress中写如上的代码,一定会失败。失败的原因是Cypress是异步的。所以有可能第二句代码先执行,所以导致 btn 是underfined。最终用例失败。


二.async /await 不工作


Cypress 不支持async 和await代码。 虽然Cypress 类似于Promise,但是不同于 Promise, Promise 本身没有重试的概念,但Cypress 却支持命令自动重试。


刚才讲解了异步,肯定有人说,那我不用异步,直接调用async 和await 是不是就可以了。可惜并不管用。 它不生效。


三. 赋值永远失败


自动化测试经常会把返回值传递给 下一个请求。 参数传递是写脚本经常见到的事情。所以大家在传递参数的时候一定要注意 传递参数的方式。


describe('Refer', function(){
let testVar    
it('testVar is null',function(){
cy.visit('https://www.baidu.com') 
cy.contains('textbox').then(($el)=>{
testVar = $el.text()
cy.log(testVar)  
// 这里值不为空 
}) 
cy.log(testVar) 
// 这里值永远为空
})})


四. 同源策略


同源策略是浏览器安全的基石。 这也意味着 当 2个iframe 直接有访问时,必须同时满足 协议相同,域名相同,端口相同的三个条件。这个限制就会导致如下代码直接报错。 同源策略或导致 有重定向的网站,不同域名的网站访问出现问题。大家要注意这一点。


describe('Invalid URL visit', function(){
let testVar
it('invalid visit',function(){
cy.visit('https://www.baidu.com')
        cy.visit('https://www.taobao.com') 
        })
})


大家日常写脚本的时候避免以上四个坑,尤其是赋值的坑。简直被坑惨了。



相关文章
|
物联网 Java Linux
一文读懂物联网 MQTT 协议之实战篇
一文读懂物联网 MQTT 协议之实战篇
672 1
|
存储 SQL 关系型数据库
详解MySQL事务日志——undo log
详解MySQL事务日志——undo log
1919 1
详解MySQL事务日志——undo log
|
数据采集 JavaScript 测试技术
史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)
在本篇文章中,将给大家推荐14款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。
5305 0
史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
《打破黑箱:深度学习模型可解释性的攻坚之路》
深度学习模型在图像识别、自然语言处理等领域取得了显著成果,但其“黑箱”特性引发了可靠性、安全性和透明度的担忧。这种不可解释性在医疗、金融和自动驾驶等场景中可能导致不确定性或信任危机。为解决这一问题,研究者从模型可视化、特征重要性分析、设计可解释模型架构及事后解释方法等方向展开探索。然而,现有方法仍面临局部解释性、计算成本高及缺乏统一评估标准等问题。实现深度学习模型的可解释性是AI走向成熟与广泛应用的关键,未来需学术界与产业界共同努力,推动技术进步以造福社会。
770 9
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
3185 1
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
306 60
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
720 17
Selenium:强大的 Web 自动化测试工具
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
357 2
|
监控 安全 测试技术
现在公司都在用的CI/CD框架到底是什么?
现在公司都在用的CI/CD框架到底是什么?
6130 1
|
JavaScript 测试技术 API
如何从 Vue 2 无痛升级到 Vue 3,一文搞定!
如何从 Vue 2 无痛升级到 Vue 3,一文搞定!
11284 8