首页 > 解决方案 > 尝试使用赛普拉斯对 CSS 属性进行断言时出现“无效主题”

问题描述

我用柏树创建了一些端到端。本地测试工作正常,但是当这些测试在 CircleCI 上运行时,它显示来自 cypress 的错误

CypressError: Timed out retrying: You attempted to make a chai-jQuery assertion on an object that is neither a DOM object or a jQuery object.

The chai-jQuery assertion you used was:

  > css

The invalid subject you asserted on was:

  > 250px

To use chai-jQuery assertions your subject must be valid.

This can sometimes happen if a previous assertion changed the subject.

这是导致此错误的代码。

    cy.get('.vce-single-image')
      .should('have.css', 'width')
      .and('have.css', 'height')

这个也是同样的错误。

    cy.window()
      .then((win) => {
        cy.get('.vce-row')
          .should('have.css', 'width')
          .and('have.css', 'height')
      })

我试图在first()之后添加,get()但它没有帮助。我在不同的设备上本地尝试过,没有任何问题。

对于 CircleCi docker 图像,我使用自己的图像,它基于circleci/php:7.3.2-apache. 这是链接https://github.com/wpbakery/ci-wordpress/blob/master/circleci/Dockerfile

标签: javascriptjquerycypress

解决方案


通常,cy.should()产生它被链接的值。然而,一些断言,包括have.css,改变了 产生的主题cy.should()。(这里是相关chai-jquery文档

所以,这应该工作:

cy.get('.vce-single-image').should('have.css', 'width', '250px')
cy.get('.vce-single-image').should('have.css', 'height', '250px')

相关阅读:我如何知道哪些断言改变了主题,哪些保持不变?


推荐阅读