如何从赛普拉斯工具中的元素获取价值?

时间:2018-10-03 10:10:39

标签: javascript html testing automated-tests cypress

我对像这样的元素取值有疑问:

<div class="Test">Number 10</div>

假设我有10-20个具有类似此处的值的类,那么我可以使用:

cy.get('.Test').invoke('text').as.('Field1')

以获得适当的值,但只有在使用this.Field1的其他测试中才有可能。 如何在同一测试中获得价值而不使用: 然后和.text()

有可能吗?我有很多字段,我想通过一个测试来检查下一个视图中的正确值。

有人有类似的问题吗?谢谢

1 个答案:

答案 0 :(得分:0)

听起来好像您可能想使用.its

cy.get('selector').its(propertyName).should('contain', 'string')

它需要与先前的命令(如get)链接在一起。您也可以按照赛普拉斯的示例在函数中使用它

Cypress显示了DOM元素的示例

  

获取DOM元素的length属性

cy
  .get('ul li')       // this yields us a jquery object
  .its('length')      // calls 'length' property returning that value
  .should('be.gt', 2) // ensure the length is greater than 2
})
  

您可以访问函数,然后深入研究自己的属性   而不是调用它们。

// Your app code
// a basic Factory constructor
const Factory = (arg) => {
  // ...
}

Factory.create = (arg) => {
  return new Factory(arg)
}

// assign it to the window
window.Factory = Factory

cy
  .window()                 // yields window object
  .its('Factory')           // yields Factory function
  .invoke('create', 'arg')  // now invoke properties on itv
  

您可以使用点表示法深入嵌套属性。

const user = {
  contacts: {
    work: {
      name: 'Kamil'
    }
  }
}

cy.wrap(user).its('contacts.work.name').should('eq', 'Kamil') // true

有关示例和规则的完整列表,请查阅Cypress.io文档https://docs.cypress.io/api/commands/its.html#Syntax