首页 web前端 js教程 Cypress 的互联网:Heroku 的'互联网”游乐场的真实场景

Cypress 的互联网:Heroku 的'互联网”游乐场的真实场景

Nov 08, 2024 pm 12:08 PM

The internet with Cypress: Real-World Scenarios from Heroku’s “The Internet” Playground

我最近去了 chatGPT 并询问有哪些好的自动化练习,在同一系统上工作一段时间后,或者只为特定类型的用户流提供自动化,我们最终可能会忘记一些事情,所以我询问了一些练习网站,然后我找到了互联网。
尽管该网站可能看起来很简陋,但它们仍然为您提供了一个尝试自动化的地方,而目前,这就是我所需要的。我花了一些时间使用 Cypress 解决了一些经典的网络挑战。
因此,言归正传,让我们深入研究我自动化的一些场景,涵盖从神奇般来来去去的按钮、奇怪的拖放、与文件相关的自动化和一些快速 Shadow DOM 工作的所有内容!

  1. 拖放: 如果您曾经尝试过自动化拖放操作,您就会知道它从来没有看起来那么简单。虽然 Cypress 对某些交互有原生支持(我确实尝试过,哈哈),但仍然需要一些创造力才能在这里进行拖放测试。

在本例中,我使用触发器('mousedown')、触发器('dragover')和触发器('mouseup')尝试了自定义拖放命令。由于该网站上实现该功能的方式,我必须更深入地挖掘才能使该测试正常工作,但对于大多数现代应用程序来说,cypress 插件应该足够了(谢天谢地)。

  1. 添加/删除元素

这个练习中的“添加元素”按钮理论上很简单,但有趣的是这个游乐场有时会试图扰乱你的期望,哈哈。单击它一次,然后...出现一个删除按钮(这不是超级直观,但哦,好吧,你只需要使用它即可)。诀窍是确保我们在测试中以稳定且可重复的方式处理添加-删除舞蹈。使用 Cypress,我们检查按钮是否出现,添加更多按钮,然后将它们一一删除,确保顺序不会出现问题。

专业提示:
跟踪出现和消失的元素可能很棘手,但 Cypress .should('exist') 和 .should('not.exist') 断言可以很好地处理这个问题。另外,您每次都会得到甜蜜的视觉确认。

  1. 动态内容

我认为这是本文中最简单的示例,但它仍然很有趣,这个想法只是创建测试来确保内容的格式是一个常量,即使它的内容会总是改变......不过对于学习仍然有用。

Cypress 可以确认元素按预期加载,而无需对实际内容过于挑剔,从而保持测试的弹性。

  1. 动态控制

对于这个控件,诸如复选框和按钮之类的控件会根据用户交互而出现或消失。有些需要等待加载指示器消失。在这里,Cypress 的 cy.wait 和 .should('be.visible') 是关键。

快速提示:

不要使用硬编码的等待,而是使用 .should('exist') 和 .should('be.disabled') 等断言来对页面的状态做出反应。这使得测试更加稳健和适应性更强。

  1. 文件下载:

下载文件可能听起来很简单,直到您必须证明它确实发生了。使用 Cypress,我们可以采取不同的措施来确保文件确实已下载。

我们可以做不同的事情来确保下载完成,对于这个应用程序,我只是确保在单击链接后我们在下载文件夹中拥有该文件。非常简单,一旦文件存在,测试就会自动通过。可以应用其他策略,例如使用 cy.intercept 来验证是否触发了下载请求。

  1. 文件上传: 就像文件下载一样,Cypress 的文件上传也非常流畅。

对于这种类型的场景,您可以使用 cypress-file-upload 之类的东西
这是一个非常好用的插件,并确认该文件已被应用程序处理。

在我的示例中,所有这些都是通过 .selectFile 命令完成的,并且有一种方法可以做到这一点,甚至无需发送实际文件,只需使用 Cypress.Buffer 就可以解决问题(您可以看到里面的实现)下面链接的存储库)。

这适用于通过单击按钮完成的上传以及拖放上传,非常简单......谢谢赛普拉斯?.

  1. 影子 DOM:

Shadow DOM 的神秘之处在于元素就像主 DOM 中的秘密。它们被隐藏起来,不遵循常规的 CSS 可见性规则,这可能有点棘手,具体取决于您需要如何在它们上运行自动化。值得庆幸的是,Cypress 支持 Shadow 命令来刺穿这层面纱并找到那些隐藏的元素。

对于这些测试,我使用 cy.get('element').shadow() 来访问 Shadow DOM 中的元素,然后,不再有问题或困难,您可以像您一样访问元素并对其进行断言与普通的。


现在就是这样..只是简单的 6 个示例,说明我们如何使用 Cypress 来处理一些基本的浏览器自动化使用,以及如何利用它来让您的生活更轻松地处理此类情况.

准备好尝试了吗?

如果您有兴趣尝试这些测试或根据您的项目调整它们,我已在我的 GitHub 存储库上提供了代码。测试套件非常轻量,所以不应该有太多疑问点,而且我们有 GitHub Actions 流程,您可以使用它,这样您就可以看到它是如何运作的!谢谢您,我们下次再见!

以上是Cypress 的互联网:Heroku 的'互联网”游乐场的真实场景的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1257
24
Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在行动中:现实世界中的示例和项目 JavaScript在行动中:现实世界中的示例和项目 Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

了解JavaScript引擎:实施详细信息 了解JavaScript引擎:实施详细信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python vs. JavaScript:社区,图书馆和资源 Python vs. JavaScript:社区,图书馆和资源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python vs. JavaScript:开发环境和工具 Python vs. JavaScript:开发环境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C/C在JavaScript口译员和编译器中的作用 C/C在JavaScript口译员和编译器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

从网站到应用程序:JavaScript的不同应用 从网站到应用程序:JavaScript的不同应用 Apr 22, 2025 am 12:02 AM

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

See all articles