技术分享 | 自动化测试中如何高效定位元素?

news2024/11/15 11:45:55

在自动化测试中,元素定位是一项非常重要的工作。良好的元素定位可以帮助测试人员处理大量的测试用例,加快测试进度,降低工作负担。但是在实际的测试工作中,我们常常遇到各种各样的定位问题,比如元素定位失败、元素选择不稳定等等。那么,在自动化测试中如何高效地定位元素呢?以下是我的一些心得和建议。

一、掌握基本的定位方法

在进行元素定位之前,我们需要先掌握基本的定位方法。比较常用的定位方法有 ID、Name、Class name、Tag name、Link text、Partial link text、CSS selector 和 Xpath。
ID 和 Name 是最基本的两种元素定位方法。分别通过 ID 或 Name 属性定位相应的元素,其唯一性比较好,但是 ID 或 Name 有可能会修改。

Class name 可以根据元素的 class 属性进行定位,一般多数元素会有 class 属性,所以这是一种常用的定位方法。

Tag name 可以根据 HTML 标签名进行定位,这种方法限制有点大,只能定位到相应的标签名。

Link text 与 Partial link text 可以根据链接的文本内容进行定位,但是需要注意不同的元素之间最好不要出现类似的文本内容,否则容易造成误判。

CSS selector 是一种基于 CSS 样式选择器的定位方法,可以使用样式属性定位元素,可以为同一个元素使用多个属性定位。

Xpath 是一种基于 XML 定义路径的语言,可以使用元素属性和文本内容、元素位置等多种方式精确定位元素。

二、选择最佳定位方法

掌握了基本的定位方法之后,我们需要根据具体场景选择最佳的定位方法。在实际的测试场景中,每个元素都会有各种各样的属性,而我们需要根据元素的特点来选择最佳的定位方法。

比如有些 Web 页面上的文本框只有 Name 属性而没有 ID 属性,这时候我们就可以通过 Name 属性来定位这个文本框。还有一些元素,它们的 ID 和 Name 属性值多用于区分同一类型的元素,其实我们可以通过 Class name 来进行定位,因为多数元素会有 class 属性,往往比较准确。

三、理解元素选择器的内部机制

除了选择最佳定位方法之外,我们还需要理解元素选择器的内部机制。具体而言,就是我们需要了解如何缩小选择器的范围,避免出现选择器的歧义或选择器无法定位的情况。

一个非常常见的概念是“最近原则”,也就是我们尽量选择最近的元素进行定位。例如在一个 Web 页面中,有多个相同的按钮,这个时候我们应该尽量选择最近的那个元素,而不是依靠整个页面的 CSS 或 Xpath 选择器来完成定位。

四、选择合适的元素属性

在进行元素定位时,我们还需要选择合适的元素属性。元素属性包括但不限于 ID、Class name、Name、value、type、text 等,甚至有时候元素的颜色和大小也会被作为元素属性来进行定位。

通常情况下,我们可以先通过 ID 或 Name 进行定位,如果这样做比较困难,则可以选择 Class name、value、type 等元素属性。

五、正确处理定位失败

在进行元素定位时,我们常常会遇到这样那样的问题,比如定位失败、选择不稳定等问题。对于这些问题,我们需要正确的处理方法。

首先,我们需要对定位失败的原因进行分析。如果元素的位置变动,则需要修改定位方法;如果页面加载较慢,则可以等待页面加载完成再进行定位;如果定位器的范围太宽,则可以缩小范围以提高定位准确性。

其次,我们还需要使用“等待机制”,等待页面或者元素加载完成后再进行定位。这里需要注意的是,等待时间需要合理,不能过长或过短。

最后,我们还应该加强对代码的封装,将元素定位相关的操作抽象成方法,提高代码可复用性和可维护性。

六、总结

通过以上的分析我们可以看出,良好的元素定位方法可以帮助我们高效进行自动化测试,避免了大量的手动工作,同时也能保证测试代码的可维护性。在进行元素定位时,我们需要掌握基本的定位方法,选择最佳的定位方法并尽量缩小选择器的范围,正确处理定位失败,并加强对代码的封装。通过这些方法,我们可以让自动化测试更加高效、准确。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1971113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数学建模】评价类模型:优劣解距离法

【数学建模】评价类模型:优劣解距离法 目录 【数学建模】评价类模型:优劣解距离法 1:前言 2:算法 1. 将原始矩阵正向化(统一为极大型) 2. 正向矩阵标准化(消除量纲) 3. 计算得分并归一化 3:例题 4&#xff1a…

【C++】学习笔记——C++的类型转换

文章目录 二十三、C的类型转换1. C语言中的类型转换2. C类型转换static_castreinterpret_castconst_castdynamic_cast 未完待续 二十三、C的类型转换 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配&#x…

书单 | 大模型的书那么多,如何快速选到适合自己的那一本?来,教你!

大模型的书这么多,该怎么选呢? 本期书单就来教大家怎么快速地从众多大模型书中选到你想要的那一本! 大模型基础 大模型入门不可错过的一本书,就是这本大模型界的经典畅销书**《大规模语言模型》**!系统性强&#xf…

Excel函数基础(二)

1、单元格名称 框选单元格(不含标题),公式选项卡->定义名称, 或者框选单元格后,在左上角的栏位直接输入要定义的名字,按下enter键即可 这样在使用函数时,数据范围参数可以用定义的名称来替…

4款翻译软件分享,告别职场困境

作为一名初入职场的新人,我经常会遇到各种需要翻译的文件,从合同到项目报告,再到专业资料,无一不考验着我的语言能力。幸运的是,我遇到了几款超级给力的翻译软件——福昕翻译在线、福昕翻译客户端、海鲸AI翻译和deepl翻…

Python | Leetcode Python题解之第310题最小高度树

题目: 题解: class Solution:def findMinHeightTrees(self, n: int, edges: List[List[int]]) -> List[int]:if n 1:return [0]g [[] for _ in range(n)]deg [0] * nfor x, y in edges:g[x].append(y)g[y].append(x)deg[x] 1deg[y] 1q [i for …

太厉害了,使用WebGL SDK居然可以添加这么多图层!

想象一下,你在网页上展示一张地图,不仅有基本的点、线、面,还能叠加三维模型、高分辨率影像、地形数据,甚至实时的车辆轨迹。这听起来是不是很酷?今天,我们就来聊聊如何用Mapmost WebGL SDK,轻松…

【Unity Shader】切线空间下计算凹凸映射

// Upgrade NOTE: replaced mul(UNITY_MATRIX_MVP,*) with UnityObjectToClipPos(*)Shader "Unlit/NormalTangent" {Properties{_Color("Color Tint", Color) (1, 1, 1, 1)_MainTex("Main Tex", 2D) "While"{}//法线纹理_BumpMap(&q…

windows11高级电源设置中【睡眠】里面的 【在此时间后休眠】没有了

系统更新后发现电脑的定时休眠功能没了,打开电源选项发现【在此时间后休眠】这个功能直接没了如下 1、添加【在此时间后休眠】选项 step1: 用管理员身份打开命令提示符 step2:输入 reg add HKLM\System\CurrentControlSet\Control\Power /v …

[数据集][目标检测]辣椒病害成熟度检测数据集VOC+YOLO格式2748张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2748 标注数量(xml文件个数):2748 标注数量(txt文件个数):2748 标注…

cocos creator 3.x中动态加载 resources 文件夹下的图片时提示找不到

文件目录如下 类型为spriteFrame 代码案例 图片设置为 sprite-frame、texture 或其他图片类型后,将会在 资源管理器 中生成一个对应类型的资源。但如果直接加载 equipments/testea,得到的类型将会是 ImageAsset,必须指定路径到具体的子资源…

微信小程序开发之自定义组件

微信小程序支持自定义组件,允许开发者创建可复用的自定义组件库,提高开发效率并增强代码的可维护性。 自定义组件分为全局组件和局部组件。 一、下面展示全局组件 创建components 目录,如图所示: 创建组件文件夹: 利用微信开发…

常用排序算法的实现与介绍

常用排序算法的实现与介绍 在计算机科学中,排序算法是非常基础且重要的一类算法。本文将通过C语言代码实现,介绍几种常见的排序算法,包括冒泡排序、选择排序、插入排序和快速排序。以下是这些排序算法的具体实现和简要介绍。 1. 冒泡排序&am…

【Redis 进阶】主从复制(重点理解流程和原理)

在分布式系统中为了解决单点问题(某个服务器程序只有一个节点(只搞一个物理服务器来部署这个服务器程序)。可用性不高:如果这个机器挂了意味着服务就中断了;性能 / 支持的并发量比较有限)。通常会把数据复制…

免费插件集-illustrator插件-Ai插件-黄金比率绘图

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,绘制黄金比率示意图。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

【ESP32接入国产大模型之星火】

【ESP32接入国产大模型之星火】 1. 讯飞星火大模型1.1 了解星火 api1.2 Http接口鉴权1.3 http调用1.3.1 http请求结构体1.3.2 返回(response)参数1.3.3 错误响应 2. 先决条件2.1 环境配置2.2 所需零件 3. 核心代码3.1 源码分享3.2 源码解析 4. 上传验证4.1 对话测试4.2 报错 5.…

【MySQL】一文彻底吃透MVCC执行原理

1.MVCC是什么? MVCC全称Multi-Version Concurrency Control,即多版本并发控制。它通过维护数据的多个版本来实现高效的并发控制,用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。 在搞清楚MVCC的实现原理之前,还需…

一天攻克一个知识点 —— 设计模式之动态代理

一、设计模式之代理设计 代理设计是在Java开发中使用较多的一种设计模式,所谓的代理设计模式就是指一个代理主体操作真实主体,真实主体操作具体业务,代理主体负责给具体业务添砖加瓦。 就好比在生活中你有一套房子想要出租(你真实主体)&…

Mysql-窗口函数一

文章目录 1. 窗口函数概述1.1 介绍1.2 作用 2. 场景说明2.1 准备工作2.2 场景说明2.3 分析2.4 实现2.4.1 非窗口函数方式实现2.4.2 窗口函数方式实现 3. 窗口函数分类4. 窗口函数基础用法:OVER关键字4.1 语法4.2 场景一 :计算每个值和整体平均值的差值4.2.1 需求4.2…

免费的远程办公软件

产生背景 我们的SD-WAN组网的产品一直都是以CPE盒子的形式进行交付,如果您有多个企业分支,那么需要在每个分支安装一个CPE盒子。 这种形式存在一些问题: 成本过高,CPE盒子本身是有成本的,没办法做到免费使用&#xf…