为了账号安全,请及时绑定邮箱和手机立即绑定

从 Cypress 页面对象返回布尔值

从 Cypress 页面对象返回布尔值

摇曳的蔷薇 2023-08-05 11:51:12
我想了解如何从 cypress 页面对象返回布尔值?使用案例:我正在尝试检查页面上是否存在某个元素。如果是,则返回一个布尔值。代码:class DataTable {  constructor() {     return this;  }  has(fieldName) {    // HOW DO I RETURN A BOOLEAN HERE?    return cy.get('.view-and-field-name').contains(fieldName)  }}Mainpage.spec.jsconst dataTable = new DataTable();expect(dataTable.has(field.fieldName)).to.be.true;我希望能对我做错的事情有一些见解。谢谢你的时间。
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

on expect()Mainpage 已经在内部执行过了cy.get('.view-and-field-name').contains(fieldName),所以是多余的。


如果dataTable.has(field.fieldName)失败,测试将停止 - 它永远不会传递错误值。


如果你想has(fieldName)传递一个布尔值,你需要切换到jquery里面,例如


has(fieldName) {

  const jquerySelector = `.view-and-field-name:contains(${fieldName})`;

  return Cypress.$(jquerySelector);

}

但使用 Cypress 命令和使用要简单得多


const dataTable = new DataTable();

dataTable.has(field.fieldName);

就我个人而言,我会放弃页面对象,而直接在测试中使用该命令。


查看完整回答
反对 回复 2023-08-05
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

我建议下一个自定义命令:

Cypress.Commands.add("validateIfElementExistsInDom", (selector) => {

    cy.get('body')

        .then($body => {

            expect($body.find(selector).length > 0).to.be.true

        })

    

})

您可以在测试中使用它,例如:


cy.validateIfElementExistsInDom(fieldName)

    

以及一般返回布尔函数示例:


Cypress.Commands.add("validateIfElementExistsInDomAsBoolean", (selector) => {

   return cy.get('body')

        .then($body => {

            return cy.wrap($body.find(selector).length > 0) //Cy wrap is needed so the function is chainable

        })

})


//in test code

cy.validateIfElementExistsInDomAsBoolean(fieldName)

    .then(boolean => expect(boolean).to.be.true)


查看完整回答
反对 回复 2023-08-05
?
FFIVE

TA贡献1797条经验 获得超6个赞

cy.get由于可重试策略,它不是同步函数,因此无法Boolean直接返回。

如有必要,您可以将should的变体与回调一起使用。

对于您的情况,更简单的变体exist是合适的(或者be.visible,可能更适合您的情况):

class DataTable {

  has(fieldName) {

    return cy.get('.view-and-field-name').contains(fieldName);

  }

}


const dataTable = new DataTable();

dataTable.getField(field.fieldName).should('exist');


查看完整回答
反对 回复 2023-08-05
  • 3 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信