

自动化测试元素定位最佳实践
source link: https://mp.weixin.qq.com/s?__biz=MzIxMTg4NDg0MA%3D%3D&%3Bmid=2247485440&%3Bidx=2&%3Bsn=af13e81130eaec48275ac7beb8405989
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近在翻阅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就是为前端开发人员设计的,这样的要求自然是合情合理的。
但很多情况是我们其实并没办法修改前端代码的,在这种艰苦的条件下,一些妥协是可以有的,比如
-
可以用html的name属性定位,因为这个属性相对稳定
-
可以用dom的id属性定位,因为改id的概率可能会比较低
-
不要用基于dom层级关系的xpath或css定位,这里一般指的是在浏览器上直接拷贝出来的xpath和css选择器
总之最佳实践是有前提的,不需要一味的去迷信最佳实践,在我们的工作场景中找到最适合自己的最佳实践才是王道。
Recommend
-
48
Linux Shell自动化运维最佳实践,这可是心血之作,强烈推荐
-
25
元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的。 本文以百度页面为例子,带入深入了解XPath和CSS定位的所有方法,代码较多,文字只提示重点关注的地方!!! 浏览器的常规操作
-
18
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=3794
-
9
Xpath 和 CSS Selector简介 CSS Selector CSS Selector和Xpath都可以用来表示XML文档中的位置。CSS (Cascading Style Sheets)是一种样式表语言,是所有浏览器内置的,用于描述以HTML或XML编写的文档的外观和样式。C...
-
11
敏捷团队的最佳测试实践:自动化金字塔 - 炒蚕豆吃蹦豆 - OSCHINA - 中文开源技术交流社区 自动化测试和敏捷软件开发常常是成对出现,但敏捷中的自动化往往说起来容易做起来难。大多数开发人员都已经认识到测试自动化的好处:它加快了测试速度、降低了...
-
8
一、模块安装 创建一个新的项目:
-
6
构建机器人流程自动化(RPA)的基础知识和最佳实践 责任编辑:cres 作者:Mike Gates | 2021-12-28 14:23:19 原创文章 企业网D1Net 机器人流程自动化(RPA)在全球范围内的使用已对业务生产力产生...
-
6
老狗啃爬虫-便捷的元素定位之Selectable 老狗啃骨头 @V...
-
7
说明:在HTML页面中,<p> 是一个标签,<p>hello</p> 是一个元素,元素由一个开始的标签和结束的标签组成。<font color="red">标签包含属性名color,属性值为red。 说明:CSS的id选择器,id常用于JS操作DOM节点对象。当同个id被多次...
-
8
彻底学会Selenium元素定位 转载请注明出处❤️ ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK