cypress - 获取 return of chain 方法与页面对象

cypress - get return of chain method with page objects

我用一些链方法实现了页面对象。

页面看起来像这样

class Table {
    getTable() {
       return cy.get('table#tblItem');
    }

    getListRow() {
       return this.getTable()
           .within(($tbl) => {
               cy.get('tbody').scrollTo('bottom', { ensureScrollable: false, duration: 1000 });
               return cy.wrap($tbl).find('tbody#itemBody tr');
        });
   }
}

并且在 cypress 规范文件中,我进行断言以验证行列表是否包含项目

Table.getListRow()
     .then((lstRowItem) => {
           expect(lstRowItem).have.length.greaterThan(1);
     })

但我总是得到方法 'getTable()' 的结果,而不是 'getListRow()'。测试失败,因为它获得了 table.

的值 1

我怎样才能正确地return这个链式方法。

谢谢

.within() 命令不允许返回内部值。

改用 .then().find()

getListRow() {
  return this.getTable()
    .then($tbl => {
      return cy.wrap($tbl).find('tbody')
        .scrollTo('bottom', { ensureScrollable: false, duration: 1000 })
        .then(() => {
          return cy.wrap($tbl).find('tbody#itemBody tr');
        });
   })

参考:.within()

.within() yields the same subject it was given from the previous command.