Cypress中instanceof断言HTMLDivElement失败,求排查语法问题
问题原因及解决方案
你的断言语法本身没错,失败的核心原因是上下文不匹配:
Cypress测试代码运行在自身的测试环境中,这里的HTMLDivElement属于测试环境的window对象;而页面里的<div>元素是属于应用页面的window对象的。两个环境的HTMLDivElement构造函数不是同一个引用,所以用instanceof判断会返回false。
可以用以下几种方式解决:
方法1:直接判断元素标签名(最推荐)
通过元素的tagName属性判断,这是最可靠且简洁的方式:
cy.get('#calculated').should(($el) => { expect($el[0].tagName).to.equal('DIV') // tagName返回大写字符串 })
方法2:使用页面上下文的构造函数
如果一定要用instanceof,可以先获取页面自身的window对象,用它的HTMLDivElement来做判断:
cy.window().then((pageWindow) => { cy.get('#calculated').should(($el) => { expect($el[0]).to.be.instanceof(pageWindow.HTMLDivElement) }) })
方法3:使用Cypress内置断言
Cypress提供了更简洁的内置断言直接判断元素类型:
cy.get('#calculated').should('be.a', 'div')
内容的提问来源于stack exchange,提问作者user19754791
相关产品推荐
相关产品推荐

