首页 > 解决方案 > 赛普拉斯中的页面对象模式?

问题描述

我想使用类似于 Selenium 等框架中存在的页面对象模式的工作流程。我想login.spec.js在 my 中使用 my editSettings.spec.js,因为它需要用户登录。

我如何在赛普拉斯实现这一目标?我可以从一个测试文件中导出一个函数以在另一个文件中使用吗?

标签: e2e-testingcypress

解决方案


是的,赛普拉斯支持在您的 UI 中创建和重用操作的能力,例如以用户身份登录。

但是,赛普拉斯还允许您比用户更强大地控制浏览器的状态。

例如:我创建了一个“用户可以使用有效的用户名和密码登录”的测试——赛普拉斯导航到登录页面,输入用户字段,输入密码字段并单击“登录”按钮。页面对象模式会让您在需要用户登录的每个测试(大多数测试)上重用操作

赛普拉斯支持这一点;但是,这比它必须要慢。导航到登录页面、输入信息、处理响应以及导航到被测页面需要花费大量时间。 相反Cypress的 API 允许执行以下操作:

  • 使用cy.request()登录凭据直接访问您的服务器。这不需要您的应用程序的状态,无需输入字段,无需单击按钮或页面指令
  • 您的站点使用的任何 cookie 都会自动设置,或者您可以使用响应设置 localStorage
  • 将其设为自定义命令,在每次测试之前调用它,然后繁荣——您几乎立即生成了用户的状态,最重要的是无碎片

推荐阅读