Cypress 的互联网:Heroku 的'互联网”游乐场的真实场景
我最近去了 chatGPT 并询问有哪些好的自动化练习,在同一系统上工作一段时间后,或者只为特定类型的用户流提供自动化,我们最终可能会忘记一些事情,所以我询问了一些练习网站,然后我找到了互联网。
尽管该网站可能看起来很简陋,但它们仍然为您提供了一个尝试自动化的地方,而目前,这就是我所需要的。我花了一些时间使用 Cypress 解决了一些经典的网络挑战。
因此,言归正传,让我们深入研究我自动化的一些场景,涵盖从神奇般来来去去的按钮、奇怪的拖放、与文件相关的自动化和一些快速 Shadow DOM 工作的所有内容!
- 拖放: 如果您曾经尝试过自动化拖放操作,您就会知道它从来没有看起来那么简单。虽然 Cypress 对某些交互有原生支持(我确实尝试过,哈哈),但仍然需要一些创造力才能在这里进行拖放测试。
在本例中,我使用触发器('mousedown')、触发器('dragover')和触发器('mouseup')尝试了自定义拖放命令。由于该网站上实现该功能的方式,我必须更深入地挖掘才能使该测试正常工作,但对于大多数现代应用程序来说,cypress 插件应该足够了(谢天谢地)。
- 添加/删除元素:
这个练习中的“添加元素”按钮理论上很简单,但有趣的是这个游乐场有时会试图扰乱你的期望,哈哈。单击它一次,然后...出现一个删除按钮(这不是超级直观,但哦,好吧,你只需要使用它即可)。诀窍是确保我们在测试中以稳定且可重复的方式处理添加-删除舞蹈。使用 Cypress,我们检查按钮是否出现,添加更多按钮,然后将它们一一删除,确保顺序不会出现问题。
专业提示:
跟踪出现和消失的元素可能很棘手,但 Cypress .should('exist') 和 .should('not.exist') 断言可以很好地处理这个问题。另外,您每次都会得到甜蜜的视觉确认。
- 动态内容:
我认为这是本文中最简单的示例,但它仍然很有趣,这个想法只是创建测试来确保内容的格式是一个常量,即使它的内容会总是改变......不过对于学习仍然有用。
Cypress 可以确认元素按预期加载,而无需对实际内容过于挑剔,从而保持测试的弹性。
- 动态控制:
对于这个控件,诸如复选框和按钮之类的控件会根据用户交互而出现或消失。有些需要等待加载指示器消失。在这里,Cypress 的 cy.wait 和 .should('be.visible') 是关键。
快速提示:
不要使用硬编码的等待,而是使用 .should('exist') 和 .should('be.disabled') 等断言来对页面的状态做出反应。这使得测试更加稳健和适应性更强。
- 文件下载:
下载文件可能听起来很简单,直到您必须证明它确实发生了。使用 Cypress,我们可以采取不同的措施来确保文件确实已下载。
我们可以做不同的事情来确保下载完成,对于这个应用程序,我只是确保在单击链接后我们在下载文件夹中拥有该文件。非常简单,一旦文件存在,测试就会自动通过。可以应用其他策略,例如使用 cy.intercept 来验证是否触发了下载请求。
- 文件上传: 就像文件下载一样,Cypress 的文件上传也非常流畅。
对于这种类型的场景,您可以使用 cypress-file-upload 之类的东西
这是一个非常好用的插件,并确认该文件已被应用程序处理。
在我的示例中,所有这些都是通过 .selectFile 命令完成的,并且有一种方法可以做到这一点,甚至无需发送实际文件,只需使用 Cypress.Buffer 就可以解决问题(您可以看到里面的实现)下面链接的存储库)。
这适用于通过单击按钮完成的上传以及拖放上传,非常简单......谢谢赛普拉斯?.
- 影子 DOM:
Shadow DOM 的神秘之处在于元素就像主 DOM 中的秘密。它们被隐藏起来,不遵循常规的 CSS 可见性规则,这可能有点棘手,具体取决于您需要如何在它们上运行自动化。值得庆幸的是,Cypress 支持 Shadow 命令来刺穿这层面纱并找到那些隐藏的元素。
对于这些测试,我使用 cy.get('element').shadow() 来访问 Shadow DOM 中的元素,然后,不再有问题或困难,您可以像您一样访问元素并对其进行断言与普通的。
现在就是这样..只是简单的 6 个示例,说明我们如何使用 Cypress 来处理一些基本的浏览器自动化使用,以及如何利用它来让您的生活更轻松地处理此类情况.
准备好尝试了吗?
如果您有兴趣尝试这些测试或根据您的项目调整它们,我已在我的 GitHub 存储库上提供了代码。测试套件非常轻量,所以不应该有太多疑问点,而且我们有 GitHub Actions 流程,您可以使用它,这样您就可以看到它是如何运作的!谢谢您,我们下次再见!
以上是Cypress 的互联网:Heroku 的'互联网”游乐场的真实场景的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

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

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

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

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

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

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