cypress 如何定位元素?

简介: cypress 如何定位元素?

大家好,我是阿萨。上一次 如何调试cypress脚本?讲解了debug 和pause 这2个关键字。通过暂停和调试,大家学会了如何调试脚本。肯定都想着多写一些脚本,锻炼下自己的能力呢。

今天阿萨就给大家讲解下如何定位元素。


一 cy.get获取元素


  1. 如何定位一个button?和css selector 有点类似。


cy.get('#query-btn').should('contain', 'Button')//类似jquery的方法cy.get('.query-btn').should('contain', 'Button')
cy.get('#querying .well>button:first').should('contain', 'Button')


2. 如何定位一个attribute data-test-id 是sarah的div?


cy.get('[data-test-id="Sarah"]').should('have.class', 'example')cy.get('[data-test-id="Sarah"]')  .invoke('attr', 'data-test-id')  .should('equal', 'test-example')
// 可以直接获取它对的css 属性cy.get('[data-test-id="Sarah"]')  .invoke('css', 'position')  .should('equal', 'static')



二 cy.contains() 获取元素方式


1. 如何获取一个列表里的某个元素?比如下图

image.png


 cy.get('.query-list')
  .contains('bananas').should('have.class', 'third')
 // 正则表达是
cy.get('.query-list')
  .contains(/^b\w+/).should('have.class', 'third')
 cy.get('.query-list')
  .contains('apples').should('have.class', 'first')
 // 把具体值传给contains
cy.get('#querying')
  .contains('ul', 'oranges')
  .should('have.class', 'query-list')
 cy.get('.query-button')
  .contains('Save Form')
  .should('have.class', 'btn')



三.cy.within()获取元素的方式。根据元素里面的placeholder 去定位元素。


比如下图:

image.png


cy.get('.query-form').within(() => {  cy.get('input:first').should('have.attr', 'placeholder', 'Email')  cy.get('input:last').should('have.attr', 'placeholder', 'Password')})



四.cy.root()找根元素。这个是查找相对的根元素,不是绝对的根元素。


image.png


 // 默认根是document
cy.root().should('match', 'html')
 cy.get('.query-ul').within(() => {
  // 在上图的例子里根元素说是ul dom 元素
  cy.root().should('have.class', 'query-ul')
})


五.查找元素的最佳实践。


 <button
  id="main"
class="btn btn-large"
  name="submission"
  role="button"
  data-cy="submit"
>
  Submit
</button>


HTML 中有一个这样的button。常见的button 的定位方法:

  1. cy.get('button').click()
  2. cy.get('.btn.btn-large').click()
  3. cy.get('#main').click()
  4. cy.get('[name="submission"]').click()
  5. cy.contains('Submit').click()
  6. cy.get('[data-cy="submit"]').click()


以上6种定位元素的方式里推荐使用顺序是6 >5>4>3>2>1.使用data-*属性 作为选择器提供上下文,并将它们与CSS或JS更改隔离开来。这个其实也不难理解。比如我们人去查找元素的时候就会先看Button的文本是submit. 所以就很好理解了。


六。定位元素或者操作元素注意事项


定位元素或者操作元素之前,我们必须确保满足以下条件。将元素滚动到视图中。确保元素没有被隐藏。确保元素没有被禁用。确保元素没有分离。确保元素不是只读的。确保元素没有动画。确保元素没有被覆盖。你学会了吗?如果觉得阿萨的内容对你有帮助,欢迎围观点赞。


相关文章
cypress里浏览器里的相关操作有哪些?
cypress里浏览器里的相关操作有哪些?
177 0
|
机器学习/深度学习 数据采集 算法
探索LightGBM:类别特征与数据处理
探索LightGBM:类别特征与数据处理
1043 5
开源测试平台横向测评系列『流马』篇:流马使用及总结
【使用篇】 ● 接口测试:创建接口(添加引用公共参数、添加引用自定义参数)、测试用例(参数关联)、业务流程测试实践 ● web自动化测试:元素管理(添加元素)、测试用例(添加元素)、设计测试场景 ● 测试计划、测试集合与测试用例相互之间的关系 【总结篇】 ● 使用总结:常见的使用注意事项,如变量引用、函数引用、关联参数引用等 ● 优化建议:结合真实使用过程,从用户角度出发,提出的7条优化建议 ● 优缺点总结:优点、缺点、评分(从不同角度评测打分)
开源测试平台横向测评系列『流马』篇:流马使用及总结
|
Java 测试技术
干货|这些JMeter内置函数,你了解多少?建议收藏
干货|这些JMeter内置函数,你了解多少?建议收藏
256 1
|
应用服务中间件 nginx
FastDFS整合Nginx常见错误
FastDFS整合Nginx常见错误
386 0
|
6月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
505 18
|
Python
《Cython 从入门到精通》PDF 版本新鲜出炉啦!!!
《Cython 从入门到精通》PDF 版本新鲜出炉啦!!!
339 1
|
SQL 数据挖掘 关系型数据库
SQL中的聚合函数:数据分析的强大工具
【8月更文挑战第31天】
727 0
|
测试技术
Cypress的钩子函数
Cypress的钩子函数
113 1
Cypress的钩子函数