testing - 赛普拉斯,如何检查属性是否存在
问题描述
我是赛普拉斯的新手,正在尝试几种不同的方法来获取复选框属性...
checkBox().should('have.prop', 'checked')
checkBox().its('checked').should('exist')
第一行工作正常,但我希望第二行也会通过,但我得到“预期未定义存在”的响应。
谢谢
解决方案
假设 checkBox() 函数返回cy.get('.checkbox'),我认为
checkBox().its('checked').should('exist')
失败,因为 checkBox() 不返回仅包含属性的对象。它返回整个元素(我认为是一个数组)。所以你不能直接在复选框()上使用它的('checked')。
无论如何,要做你期望做的事情,你可以使用几种方法,
使用调用('attr', 'checked')
checkBox().invoke('attr', 'checked')
.should('exist')
使用 getAttribute js 函数并期望 chai 断言
checkBox().then($el => {
expect($el[0].getAttribute('checked')).to.exist;
})
在 js 中使用属性,在 cypress 中使用 (its, wrap)。
注意:如前所述,您不能直接在 cy.get() 上使用它。您需要从对象中提取属性并使用 cy.wrap()
checkBox().then($el => {
cy.wrap($el[0].attributes)
.its('checked')
.should('exist')
})
您可以使用其中任何一种方法,但我推荐的方法是您的第一种方法。
干杯。希望能帮助到你。
推荐阅读
- reactjs - Okta - React SDK - 获取用户组
- rust - 是否有等效于python中的`any`方法
- c++ - How to create an STL output iterator for a Eigen matrix?
- javascript - Modifying class properties in a method
- python - 图像拼接但颜色略有变化
- python - 如何修复“名称错误:系统未定义”
- c++ - Access list at index from QML
- parse-platform - 如何在 Parse Server 中删除 Class 的所有对象?
- r - 如何在R中的管道序列中对选择的列应用函数?
- php - 如何扩展具有内部关系的实体?