【发布时间】:2020-12-03 22:31:05
【问题描述】:
赛普拉斯可以选择使用 within() 将所有后续 cy 命令的范围限定在该元素内。
在我想找到后代的情况下,使用 within() 或其他两种格式会更好吗?我知道 > 是直接后代,而空间与 inside() 相同,它检查所有后代。我必须在我的 get() 中使用这两个标签的原因是因为 tagB 在页面中被多次使用,所以我必须使用 tagA 使其独一无二。
代码:
<div class="ClassA" data-qa="tagA">
<button class="ClassB" data-qa="tagB"/>
</div>
哪个更好?
cy.get('[data-qa="tagA"] [data-qa="tagB"]').click()
cy.get('[data-qa="tagA"] > [data-qa="tagB"]').click()
cy.get('[data-qa="tagA"]').within(() => {
cy.get('[data-qa="tagB"]').click()
})
【问题讨论】:
-
第二个版本和第一个和第三个不一样。使用
>仅强制直接子级。没有它,找到的孩子可以在任何嵌套级别。 -
哪个更好,是一个相对的问题。不同的场景可能会比另一种受益更多。
-
我更新了我的示例代码。但是,是的,在我的情况下,这三个 3 都有效,但只是在想哪个更好或更合适?
标签: javascript cypress