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?
196 0
cypress里浏览器里的相关操作有哪些?
cypress里浏览器里的相关操作有哪些?
134 0
|
JavaScript 数据安全/隐私保护
Cypress初体验,写一个成功login的脚本
Cypress初体验,写一个成功login的脚本
170 0
|
测试技术
Cypress继承Mocha 的那些特性介绍
Cypress继承Mocha 的那些特性介绍
160 0
Cypress继承Mocha 的那些特性介绍
|
Java 测试技术
干货|这些JMeter内置函数,你了解多少?建议收藏
干货|这些JMeter内置函数,你了解多少?建议收藏
212 1
|
测试技术 Python
cypress 和allure 集成生成测试报告
cypress 和allure 集成生成测试报告
322 1
cypress 和allure 集成生成测试报告
|
应用服务中间件 nginx
FastDFS整合Nginx常见错误
FastDFS整合Nginx常见错误
344 0
|
数据采集 Web App开发 前端开发
前端自动化UI测试的完整方案
前端自动化UI测试的完整方案
1439 0
|
SQL 数据挖掘 关系型数据库
SQL中的聚合函数:数据分析的强大工具
【8月更文挑战第31天】
604 0