这种情况下通常会测试失败
提供了 data-* 属性,包含了下面三个定位器
data-cy
data-test
data-testid
#id 选择器cy.get("#main1").click()
.class 选择器cy.get(".btn").click()
cy.get("button[id='main2']").click()
:nth-child(n) 选择器cy.get("ul>li:nth-child(3)").click()
Cypress.$定位器针对难以用普通方式定位的元素,Cypress 还提供了 JQuery选择器
Cypress.$('#main2')
// 等价于cy.get('#main2')
cy.get(selector)该用法用来在 DOM 树中查找 selector 对应的 DOM 元素,如果可以匹配多个元素,则返回多个元素
it('test get',()=>{
cy.get('#main1').click();
})
.find(selector)该定位方法用来在 DOM 树中搜索已被定位到的元素的后代,并将匹配到的元素返回为一个新的 jQuery 对象【注意,不是返回元素对象
it('test find',()=>{
cy.get('ul').find('[data-test="li3"]')
})
.contains()该方法可用来获取包含指定文本的 DOM 元素
cy.contains('submit');//从整个dom中查找
cy.get('.btn').contains('submit');//从.btn元素中查找
cy.contains('.btn','submit');//从.btn元素中查找
contains支持正则表达式匹配
只会返回第一个匹配到的元素
.children()用来获取 DOM 元素的子元素
it('test childen',()=>{
cy.get('ul').children();
cy.get('ul').children('#li1');
})


.parents()用来获取 DOM 元素的所有父元素,包括了爷爷级别、祖父级别…

.parent()用来获取 DOM 元素的第一层父元素

.siblings()用来获取 DOM 元素的所有同级元素
it('test siblings',()=>{
cy.get('#li1').siblings()
})

.first().last()匹配给定的 DOM 元素列表中的最后一个元素
重点:如果是单个 DOM 元素调用此方法,则返回自己
it('test first and last',()=>{
cy.get('ul > li').first();
cy.get('ul > li').last();
})

.next()获取给定的 DOM 元素后面紧跟的下一个同级元素

.nextAll()获取给定的 DOM 元素后面紧跟的所有同级元素

.nextUntil(selector)获取给定的 DOM 元素后面紧跟的所有同级元素,直到遇到 Until 里定义的元素为止

prev家族.prev()获取给定的 DOM 元素前面紧跟的上一个同级元素
.prevAll()获取给定的 DOM 元素前面紧跟的所有同级元素
.prevUntil()获取给定的 DOM 元素前面紧跟的所有同级元素,直到遇到 Until 里定义的元素为止
.each()用来遍历数据或者及其类似的结构(对象有 length 属性即可)
语法
.each(callbackFn)
it('each test',()=>{
cy.get('ul > li').each($li=>{
cy.log($li.text())
})
})

$li是一个变量名,每次循均代表一个jQuery对象.eq()