最近在翻阅cypress文档的时候发现一些关于自动化测试中元素定位的思考,觉得很有意思,这里跟大家分享一下。

核心概念

其实元素定义的核心概念很简单,一些元素总有自己独一无二的一些特点,比如我们每个人都有身份证号,利用这种独特性对元素进行定位,从而进一步做后续操作。

有道是君子有所为有所不为,一些在实践中被证明了是不合适的做法是最好不要去采用的,比如 不要使用有可能发生改变的属性对元素进行定位 。

如果你有能力修改前端代码,那么最佳实践就是: 加一个定位专用的属性,比如 data-* ,这个属性跟js逻辑以及css样式都无关,这样就做到了定位属性与易变属性(dom/css selector/js selector)隔离。

下面的一些做法是cypress不太推荐的,不过见仁见智,不推荐不代表完全不能这样做。

不要用css属性定位,比如 id,class,tag
不要用可能会发生变化的文本文字进行定位,比如按钮上的文字等

没有对比就没有伤害

cypress的最佳实践里给大家列举了一些例子进行对比,我们感受一下

选择器 推荐程度 备注
cy.get(‘button’).click() 永远不要这样做 最差的选择,没有任何上下文,太通用
cy.get(’.btn.btn-large’).click() 永远不要这样做 很差,这些class很容易发生修改
cy.get(’#main’).click() 不太好 还行,不过还是跟js和css选择器耦合在一起
cy.get(’[name=submission]’).click() 不太好 跟html的name属性耦合在了一起
cy.contains(‘Submit’).click() 见仁见智 好多了,但是仍然跟按钮文本耦合在了一起
cy.get(’[data-cy=submit]’).click() 最佳选择 单独的属性,与css和js隔离

然而,人生十不如意有八九

上面的一些观点,原则上我是非常赞同的。

但是呢,现实往往比理论更加立体,cypress的理念是对于被测项目的前端代码,你必须百分百有控制权,也就是说你需要是这个项目的前端开发人员。

cypress就是为前端开发人员设计的,这样的要求自然是合情合理的。

但很多情况是我们其实并没办法修改前端代码的,在这种艰苦的条件下,一些妥协是可以有的,比如

1.可以用html的name属性定位,因为这个属性相对稳定2.可以用dom的id属性定位,因为改id的概率可能会比较低3.不要用基于dom层级关系的xpath或css定位,这里一般指的是在浏览器上直接拷贝出来的xpath和css选择器

总之最佳实践是有前提的,不需要一味的去迷信最佳实践,在我们的工作场景中找到最适合自己的最佳实践才是王道。

最后|资源分享
下面这些是我的收集和整理的资料,对于开始学习【软件测试】或是技能进阶的朋友来说,绝对是最全面的教程仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你

衷心希望文章有帮助到大家,如有其他问题,也欢迎大家前来交流和补充(关注微信公众号:程序媛木子来领取海量软件测试资源(更多技术交流、面试资料,),大家也可以加入qq(644956177)群里还有同行一起交流。

自动化测试元素定位“最佳实践”相关推荐

  1. 自动化无法定位的原因_Appium Android 自动化测试 -- 元素定位

    自动化测试元素定位是难点之一,编写脚本时会经常卡在元素定位这里,有时一个元素能捣鼓一天,到最后还是定位不到. Appium 定位方式和 selenium 一脉相承,selenium 中的定位方式App ...

  2. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析

    背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...

  3. 自动化测试元素定位的8种方法:

    自动化测试元素定位的8种方法: 1.通过id属性定位: find_element_by_id() 复数形式: find_elements_by_id() 2.通过name属性定位: find_elem ...

  4. 不得不说--自动化测试元素定位与用例设计

    关于自动化测试,经常被问到元素的定位 与 如何设计用例. 很多时间我也帮不了你解决实际的问题,只能从个人脚本谈谈如何看待这些问题. 不得不说之元素定位 虽然,本章写了十几篇文章来讲元素的定位与操作,对 ...

  5. python+appium自动化测试元素定位

    关于app自动化测试,元素定位工具有三个: appium自带的Appium Inspector工具 Android ADT原生的工具 python版uiautomator2中的weditor 由于我常 ...

  6. Appium 自动化测试元素定位工具使用

    简介     前面环境基本都搭建好了,相关的知识也准备的差不多了,那么我们就开始下一步元素定位,元素定位首先需要知道使用哪些元素定位工具,本文讲解常见的元素定位工具uiautomatorviewer和 ...

  7. Appium自动化测试元素定位方式

    appium 定位元素  1.appium服务器工具定位 Start inspector Session 2.打开uiautomatorviewer.bat android-sdk-windows(S ...

  8. 自动化测试元素定位方式之find_elements_by_XXX()定位

    find_elements_by_XXX() 作用: 1.查找定位所有符合条件的元素 2.返回的定位元素格式为数组(列表)格式: 说明: 3.列表数据格式的读取需要指定下标(下标从0开始) 操作: 说 ...

  9. Selenium自动化测试-元素定位的八种方法,你知道的有几种?

    大家好 我就是那个人见人爱,花见花开的阿里大叔 今天继续selenium系列 实例示范 即学即用 学成之后 你就是整条gai最靓的仔 这次我们要分享的是对元素的定位,在一个页面中有很多不同的策略来定位 ...

最新文章

  1. Sobel 边缘实现
  2. iOS 本地DNS解析方法
  3. Spring boot + Redis
  4. windows窗体(winform)中嵌入显示Excel工作表。
  5. 兼容所有浏览器的CSS3圆角效果
  6. 工行居逸贷,信贷员说3年利率11.38%!!!
  7. WCF Rest Service
  8. tensorFlow13卷积神经网络发展
  9. Kaggle | 用 YoloV5 将物体检测的性能翻倍的心路历程
  10. 【华为云技术分享】程序员真香定律:源码即设计
  11. 分组卷积/群卷积(Group Convolution)
  12. iOS iPhone官方参考资料明细
  13. 网络虚拟化基础协议之Geneve
  14. mmap java_Java文件映射[Mmap]揭秘 | 学步园
  15. VS2017 CUDA编程学习实例3:CUDA实现直方图统计
  16. 编码表概述和常见编码表
  17. 手把手教你做短视频去水印微信小程序(5-服务端代码)
  18. 2014腾讯校园招聘实习技术类笔试题目
  19. LaTeX中参考文献的插入方式(不使用BibTeX)
  20. Java实现仿win10计算器

热门文章

  1. Java 7 最快要到 2012 年中发布
  2. big endian与little endian
  3. 【解决】打印机只打印第一页纸的问题
  4. 设计 Pastebin.com
  5. Baidu-Rpc中Pb结构转为Json
  6. pythonchar中的拟合方法_Python 字符串中常见的一些方法
  7. linux yum安装python3_linux下yum安装python3
  8. 【写作技巧】毕业论文写作资料--刊物搜索
  9. 图像坐标球面投影_比较常用的坐标几种投影
  10. markdown 本地链接_Markdown从入门到入坑