Cypress之与元素交互
Cypress之与元素交互
元素定位选择器
页面元素交互
定位元素辅助方法
可操作类型
模拟键盘操作
在介绍元素交互之前需要介绍一下命令日志:
作用:
展示额外的Log
信息
cy.route()
cy.spy()
cy.stub()
Cypress特有的定位器data-*
data-cy
data-test
data-testid
Cypress
专有的定位器,仅用来测试
获取方式:
cy.get('[data-cy=]').click()
常规选择器
#id
选择器
cy.get('#main').click()
--->button
的id
属性
.class
选择器
cy.get('.btn').click()
--->button
的class
属性
attributes
属性选择器
cy.get('button[id=main]').click()
:nth-child(n)
选择器
示例:
<ul>
<li id="id">1</li>
<li>2</li>
<li>3</li>
</ul>
cy.get('ul>li:nth-child(2)')
cy.get('li:nth-child(2)')
Cypress.$
定位器(jQuery
选择器)
Cypress.$('#main')
.find(selector)
cy.get('ul').find('#id')
.get(selector)
cy.get('#id')
.contains(selector)
cy.contains('1')
--->直接查找ul
下的li
内容为1
的--->直接通过内容查找
cy.contains('li', '1')
--->直接通过内容查找,很强大
示例代码:
for(const user of testLoginUser) {
it(user.summary, function() {
// cy.get('ul>li:nth-child(2)')
// .as('change_Btn');
// cy.get('@change_Btn')
// .click();
cy.contains('li', '密码登录')
.click();
cy.get('#agree')
.click();
// 检查元素处于被选中状态
cy.get('#agree')
.should('be.checked');
cy.get('#name')
.type(user.username);
cy.get('#password')
.type(user.password);
cy.get('button[type=submit]')
.should('have.class', 'button__StyledButton-sc-1xvpoi0-0')
.should('have.class', 'DNJh atom__SumbitButton-sc-1f08aeq-3')
.should('have.class', 'jdbddl')
.as('submit_Btn');
cy.get('@submit_Btn')
.click();
});
}
表达式查找:
cy.contains(/^i\w+/)
--->基于表达式查找
重点:
contains
的三种用法
Cypress与页面元素交互
.find(selector)
特点:
不能直接连cy
示例代码:
<ul>
<li id="id">1</li>
<li>2</li>
<li>3</li>
</ul>
it('A Test About find', () => {
cy.get('ul')
.find('#id')
.click();
});
.children()
.parents()
--->DOM
元素的所有父元素.parent()
--->DOM
元素的第一层父元素
示例代码:
it('Test Function About Children', () => {
cy.get('ul')
.children();
cy.get('li')
.parents();
});
.siblings()
--->获取DOM
元素的所有同级元素
cy.get('#id').siblings()
.first()
--->匹配给定DOM
对象集的第一个元素
cy.get('#id').first()
.last()
--->匹配给定DOM
对象集的最后一个元素
cy.get('ul').last()
.prev()
--->给定DOM
对象紧跟着的上一个同级元素
cy.get('ul').prev()
-
.prevAll()
--->给定DOM
对象之前的所有的同级元素 -
.next()
--->给定DOM
对象紧跟着的下一个同级元素 -
.nextAll()
-
.nextUntil()
--->匹配给定DOM
对象之后的所有同级元素,直到遇见Until
里定义的元素为止
cy.get('#id').nextUntil('#kevin')
.prevUntil()
--->匹配给定DOM
对象之前的所有同级元素,直到遇见Until
里定义的元素为止.each()
--->遍历数组及类似结构(数组或对象有length
属性)
cy.get('#ul').each(($li) => {cy.log($li.text())});
.eq()
cy.get('#ul').eq(0)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2021-04-16 4.16Java接口的作用
2021-04-16 4.16Java抽象方法和抽象类
2021-04-16 4.16Java游戏小项目之记时功能
2021-04-16 4.16Java游戏小项目之爆炸的实现
2021-04-16 完整的WSDL语法
2021-04-16 WSDL UDDI
2021-04-16 WSDL绑定