Automated tests 您认为cypress中调用函数的实用程序是什么?

Automated tests 您认为cypress中调用函数的实用程序是什么?,automated-tests,cypress,Automated Tests,Cypress,我试图理解为什么我们有invoke函数,以及我们如何理解我们必须调用.invoke('attr','target')函数而不是.attr('target')函数所以Cypress命令在运行以查看带有该选择器的元素是否可用时实际上不会同步运行,我们只想在元素可用时调用.attr函数,因此我们希望等到元素可用时,因此我们必须使用.invoke()函数。Cypress在引擎盖下使用jQuery,但它在jQuery包装上创建Cypress包装,以便等待默认超时时间或直到时间元素可用,以较早者为准 cy.


我试图理解为什么我们有invoke函数,以及我们如何理解我们必须调用
.invoke('attr','target')
函数而不是
.attr('target')
函数

所以Cypress命令在运行以查看带有该选择器的元素是否可用时实际上不会同步运行,我们只想在元素可用时调用
.attr
函数,因此我们希望等到元素可用时,因此我们必须使用
.invoke()
函数。

Cypress在引擎盖下使用jQuery,但它在jQuery包装上创建Cypress包装,以便等待默认超时时间或直到时间元素可用,以较早者为准

cy.get(selector)
我们不能在Cypress包装器上调用像.attr这样的jQuery函数,因此对于这种情况,我们使用jQuery函数的名称调用invoke函数。

但是如果在Cypress包装器上使用.then(),然后,传递给then的cb函数将在前一个命令返回时执行,因此它变得有点同步,我们失去了cypress的重试能力,因此可以如下调用jQuery命令

cy
  .get('img').then(image => image.attr('src'invoke('attr', 'src')
    .should('include', 'myLogo')
cy
  .get('img').then(image => image.attr('src'invoke('attr', 'src')
    .should('include', 'myLogo')