【问题标题】:Page Object Pattern in Cypress?赛普拉斯中的页面对象模式?
【发布时间】:2018-11-14 01:37:28
【问题描述】:

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

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

【问题讨论】:

    标签: e2e-testing cypress


    【解决方案1】:

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

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

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

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

    • 使用cy.request() 使用登录凭据直接访问您的服务器。这不需要您的应用的状态、无需输入字段、无需点击按钮或页面指引
    • 您的网站使用的所有 Cookie都会自动设置,或者您可以使用回复set localStorage
    • 将此命令设为自定义命令,在每次测试前调用它,然后就可以立即生成用户状态,最重要的是无碎片

    【讨论】:

      【解决方案2】:

      我实际上想出了这两个示例,一个使用 JavaScript,另一个使用 Typescript。

      https://github.com/antonyfuentes/cypress-typescript-page-objects https://github.com/antonyfuentes/cypress-javascript-page-objects

      希望这对其他人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 2020-12-23
        • 2020-05-30
        • 2021-12-02
        相关资源
        最近更新 更多