我正在编写Cypress端到端测试,我需要首先检查一个特定的按钮是否出现在我的网页上(条件测试)。
我是这么做的:
cy.get('body')
.then($body => {
if ($body.has(".myClass").length) {
//DO SOMETHING
}
})
这个方法很好用,但是当我试图根据子元素的属性而不是类来选择子元素时,却找不到子元素,这意味着这个方法不起作用:
cy.get('body')
.then($body => {
if ($body.has("div[data-cy='deleteButton']").length) {
//DO SOMETHING
}
})
我不明白出了什么问题。有人知道吗?
我做了进一步的实验,看起来即使使用class,一些子元素也找不到。下面你可以看到HTML结构和我可以用作标识符的class,我不能用作标识符的class和我正在尝试使用的data-cy属性:
3条答案
按热度按时间vltsax251#
这看起来像是条件测试和异步加载的问题。
if
语句可能在页面加载之前运行。如果你用一个简化的静态页面
并在浏览器中打开,则测试通过
所以问题很可能是由于加载延迟。
请尝试使用静态元素,而不是
$body
,该静态元素靠近页中也异步加载但不是条件加载的部分我猜
z0qdvdin2#
tnkciper3#
您可以像这样使用
.attr
jquery方法: