我们如何在其他工具(如 selenium)中使 cypress 脚本像 POM 一样易于维护

How we can make cypress scripts easily maintainable like POM in other tools like selenium

这只是关于使用 cypress.io 构建框架的一般说明。 在 cypress 中,我们可以在 selenium 中编写类似页面对象模型的测试框架吗? 这些模型使我们的生活易于维护测试。 例如,如果跨多个测试/文件使用的特定元素的 ID 或 class 已随新版本的 Application-In cypress 发生变化,则很难进行多重测试 files/tests 并更改 ID正确的? 我们可以遵循相同的页面对象模型概念,例如将每个页面中的所有元素声明为变量并使用 tests/functions 中的变量名称吗? 我们还可以在不同的测试 .js 文件中重用这些变量吗? 如果是 - 你能给个样品吗 谢谢

我看到只有少数人在使用 Cypress 创建自动化框架时使用 POM 概念。是否建议遵循 POM 模型,这取决于阅读团队的以下 link。我会说这可能取决于自动化工具/架构。根据赛普拉斯团队的说法,这是不值得推荐的,可能是一个有争议的话题,请阅读:https://www.cypress.io/blog/2019/01/03/stop-using-page-objects-and-start-using-app-actions/#

我们可以在Cypress.env.json filecypress.json文件中声明变量名,如下所示:

{
"weight": "85",
"height": "180",
"age": "35"
}

然后,如果您想在 test-spec 中使用它们,请创建一个新变量并像下面的测试规范那样接收它。

const t_weight = Cypress.env('weight');
const t_height = Cypress.env('height');

现在您可以在相应的 textbox 页面输入中使用变量,如下所示:

cy.get('#someheighttextfieldID').type(t_weight);
cy.get('#someweighttextfieldID').type(t_height);

或者直接领取; cy.get('#someweighttextfieldID').type(Cypress.env('weight'));

示例: /* 在 'test-spec.js' 文件中声明变量*/

const t_weight = Cypress.env('weight');
const t_height = Cypress.env('height');

//赛普拉斯测试 - 假设下面的测试测试一些动作并将变量接收到文本框

describe('Cypress test to receive variable', function(){
it('Cypress test to receive variable', function(){
    cy.visit('/')
    cy.get('#someweighttextfieldID').type(t_weight);
    cy.get('#someheighttextfieldID').type(t_height);  
    //even receive the variable straight away
  cy.get('#someweighttextfieldID').type(Cypress.env('weight'));

  })
});