繁体   English   中英

Cypress cy.get 返回 HTML 对象,但如果我将 .then(elem) 添加到 cy.get 函数中,则 elem 是一个空的 HTML 对象

[英]Cypress cy.get returns HTML object, but if I add .then(elem) to the cy.get function elem is an empty HTML object

这是我的测试:

    it('tests', () => {
      cy.log(cy.get('body'))
      cy.get('body').then((body) => {
        cy.log(body)
      })
    })

和输出:


1 get body
2 log Object{5}
3 get body
4 log {}

所以cy.get('body')返回一个带有 5 个子元素的 html 元素,但是当我将 .then .then(body)添加到 cy.get 时, body是空的。 我希望能够将主体保存为变量并继续在主体变量上使用 .find jQuery 函数。 有谁知道这里可能发生什么?

更新

我真正想做的是添加一个条件。 因此,如果找到一个元素,则执行某些操作,否则执行其他操作。 以上似乎是一个障碍。 所以像:

      cy.get('body').then((body) => {
         if (cy.wrap(body).find('.dashboard')) {
          cy.log('found')
         } else {
          cy.log('not found')
         }
      })

但在这种情况下,我收到此错误:

cy.find() failed because it requires a DOM element.

The subject received was:

  > {}

The previous command that ran was:

  > cy.wrap()

All 2 subject validations failed on this subject.

如果你想使用find()你可以直接在then()里面使用它 -

cy.get('body', {timeout: 6000}).then(($body) => {
    if ($body.find('.dashboard').length > 0) {
        cy.log('found')
    } else {
        cy.log('not found')
    }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM