Robot Framweork之UI自动化测试---元素定位的4种方式

在Robot Framweork的UI自动化测试中,元素定位主要有四种,即通过id,name,xpath和CSS定位

一、id定位

id就好比一个人身份证,元素在 HTML 页面中的唯一标识符,因此 ID 定位方式是最常用的方式之一,通过 ID 定位元素简单快捷,且定位速度较快。

使用语法:

二、name定位

name就好比一个人的姓名, 元素的名称属性,相对于 ID,Name 属性可能不是唯一的,因此在使用 Name 定位时需要确保不会定位到多个相同 Name 的元素。

使用语法:

三、xpath定位

xpath有绝对路径和相对路径,大多数情况下都用相对路径,绝对路径不利于维护。

1、绝对路径

绝对路径定位使用完整的路径从根节点开始,直接指定元素在 DOM 树中的位置。绝对路径定位是一种较为精确的定位方式,但也较为复杂,容易受页面结构变化的影响。绝对路径以斜杠 / 开头,指定元素的所有父节点直到根节点的路径。

例如:/html/body/div[1]/div[2]/form/input[3], 这个 XPath 表示定位路径为根节点下的第一个 div,然后在这个 div 下的第二个 div,再在第二个 div 下的 form,最后在 form 下的第三个 input 元素 。

2、相对路径

相对路径定位相对于当前节点或当前节点的某个父节点,更灵活且容易维护。相对路径使用双斜杠 // 开头,表示在整个 DOM 树中查找符合条件的元素。

相对路径定位可以找元素本身或者找上级,下面举例说明:

例如://input[@id='username'], 这个XPath 表示查找整个 DOM 树中的所有 input 元素,并且其中的 id 属性等于 "username" 的元素,这个是找元素本身。

例如://input[@id='username']/span, 这个XPath 表示查找整个 DOM 树中的所有 input 元素,并且其中的 id 属性等于 "username" 的元素下的span元素,这个是通过上机找的例子。

在实际测试中,建议选择相对路径定位,并尽量避免过于复杂的绝对路径定位,以保持测试脚本的可维护性和稳定性。

3、布尔值写法

XPath 支持布尔值写法,用于在 XPath 表达式中进行条件判断和逻辑运算。

例如: //span[text()='John Doe' and @class='name'],查找文本内容为 "John Doe",且 class 属性为 "name" 的 <span> 元素。

//button[@class='submit' or @class='confirm'],查找 class 属性为 "submit" 或 "confirm" 的 <button> 元素。

四、CSS定位

CSS Selector 是一种模式匹配语法,可以通过元素的属性、类名、ID 等来定位元素。以下是一些常用的 CSS Selector 定位示例:

1、通过 ID 定位:

使用 # 符号后跟元素的 ID 来定位。 示例:#username,表示定位 ID 属性为 "username" 的元素。

2、通过 Class 定位:

使用 . 符号后跟元素的 class 名称来定位。 示例:.submit-button,表示定位 class 属性为 "submit-button" 的元素。

3、通过标签名定位:

直接使用元素的标签名来定位。 示例:input,表示定位所有 <input> 元素。

4、通过属性定位:

使用方括号 [attr=value] 来定位具有指定属性和属性值的元素。 示例:input[type="text"],表示定位所有 type 属性为 "text" 的 <input> 元素。

5、通过层级关系定位:

使用空格来表示层级关系,例如 div span 表示定位 <div> 元素下的所有 <span> 元素。 示例:div.form-group input,表示定位 <div> 元素中具有 class 为 "form-group" 的元素下的所有 <input> 元素。

6、通过组合定位:

使用 , 来组合多个 CSS Selector,表示匹配其中任何一个选择器。 示例:input[type="text"], input[type="password"],表示定位所有 type 属性为 "text" 或 "password" 的 <input> 元素。

在实际测试工作中,css的学习成本高一些,所以xpath用到的更多,而且xpath可以直接在浏览器通过F12复制XPATH,简单快捷。

我是程序员馨馨,全网id唯一,转载请注明出处。

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

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

相关文章

C++标识符的作用域与可见性

标识符是一个由程序员定义的名称&#xff0c;为标识区别变量、函数和数据类型等&#xff0c;代表程序的某些元素&#xff0c;变量名就是标识符的一个展现。 作用域讨论的是标识符的有效范围&#xff0c;可见性讨论的是标识符是否可以被引用。在一个函数中声明的变量就只能在这个…

网络安全进阶学习第八课——信息收集

文章目录 一、什么是信息收集&#xff1f;二、信息收集的原则三、信息收集的分类1.主动信息收集2.被动信息收集 四、资产探测1、Whois查询#常用网站&#xff1a; 2、备案信息查询#常用网站&#xff1a; 3、DNS查询#常用网站&#xff1a; 4、子域名收集#常用网站&#xff1a;#常…

C语言实用调试详解

目录 什么是bug? 调试是什么?有多重要? 调试是什么? 调试的基本步骤 Debug和Release的介绍 Windows环境调试介绍 调试环境的准备 学会快捷键 调试的时候查看程序当前信息 查看临时变量的值 查看内存信息 查看调用堆栈 查看汇编信息 查看寄存器信息 一些调试…

控制反转ioc理解,配置说明

先写个例子吧 配置文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

小红书 前端开发一面 2023.7.20

base北京 时长&#xff1a;45min 日常实习 项目拷打Three.jsVueJavaScriptCSS手写题 自我介绍选择一个你负责任务最多的项目讲讲在项目开发中遇到的一个印象最深刻的问题&#xff0c;最后如何解决的讲讲你认为的Three.js是什么?说说作用域说说Vue和React的区别说说Vue3的生命…

CSS 高频按钮样式

CSS 高频按钮样式 矩形与圆角按钮 正常而言&#xff0c;我们遇到的按钮就这两种 -- 矩形和圆角&#xff1a; 它们非常的简单&#xff0c;宽高和圆角和背景色。 <div classbtn rect>rect</div><div classbtn circle>circle</div>.btn {margin: 8px aut…

【Linux命令200例】rm用来删除文件或目录(谨慎使用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜…

ThreadPoolExcuter源码阅读

线程池的基本参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler) {this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,…

MongDB文档--架构体系

阿丹&#xff1a; 在开始学习先了解以及目标知识的架构体系。就能事半功倍。 架构体系 MongoDB的架构体系由以下几部分组成&#xff1a; 存储结构&#xff1a;MongoDB采用文档型存储结构&#xff0c;一个数据库包含多个集合&#xff0c;一个集合包含多个文档。存储形式&#…

前端Vue入门-day06-路由进阶

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 路由的封装抽离 声明式导航 导航链接 两个类名 自定义高亮类名 跳转传参 1. 查询参数传参 2. 动态…

opencv基础函数使用

文章目录 前言一、Mat类二、Vec3b三、Scalar函数四、imread函数五、imshow函数六、imwrite函数总结前言 本篇文章带大家来学习一下opencv基础函数的使用。 一、Mat类 Mat类是OpenCV中最常用的数据结构之一,用于表示和操作图像和矩阵数据。它提供了一个多维数组,用于存储像…

Socket 前端项目结构搭建

npm install socket.io-client --savenpm install element-plus --savenpm install vue-router4.0.12 --save简单的页面搭建 聊天系统登录前端实现 登录模板 <template><div class"login-container"><el-form ref"form" :model"fo…

IDEA快捷键大全

编辑与导航快捷键&#xff1a; Ctrl S: 保存当前文件Ctrl Z: 撤销Ctrl Y: 重做&#xff08;Redo&#xff09;Ctrl X: 剪切Ctrl C: 复制Ctrl V: 粘贴Ctrl D: 复制当前行或选定的区域Ctrl Delete: 删除光标后的单词Ctrl Backspace: 删除光标前的单词Ctrl Shift 上箭头…

使用 OpenCV 和深度学习对黑白图像进行着色

在本文中,我们将创建一个程序将黑白图像(即灰度图像)转换为彩色图像。我们将为此程序使用 Caffe 着色模型。您应该熟悉基本的 OpenCV 功能和用法,例如读取图像或如何使用 dnn 模块加载预训练模型等。现在让我们讨论实现该程序所遵循的过程。 给定一张灰度照片作为输入,本文…

Maven 打包项目后,接口识别中文乱码

背景 项目在Idea里面运行&#xff0c;调用接口发送中文消息正常&#xff0c;用Maven打包项目后&#xff0c;运行jar包&#xff0c;调用接口发送中文出现乱码。 解决方法 1.Idea编译配置 2.如果更改了上述配置之后还是没有效果&#xff0c;则在运行jar包的前面加上 -Dfile.en…

100天精通Python(可视化篇)——第96天:Pyecharts绘制多种炫酷箱形图参数说明+代码实战

文章目录 专栏导读1. 箱形图介绍1&#xff09;箱形图介绍2&#xff09;怎么看箱型图&#xff1f;3&#xff09;解释说明 2. 普通箱型图3. 水平箱型图4. 群组箱型图5. 带异常点的箱型图书籍推荐 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业…

rust 如何定义[u8]数组?

在Rust中&#xff0c;有多种方式可以定义 [u8] 数组。以下是一些常见的方式&#xff1a; 使用数组字面量初始化数组&#xff1a; let array: [u8; 5] [1, 2, 3, 4, 5];使用 vec! 宏创建可变长度的数组&#xff1a; let mut vec: Vec<u8> vec![1, 2, 3, 4, 5];使用 v…

适配器模式与装饰器模式对比分析:优雅解决软件设计中的复杂性

适配器模式与装饰器模式对比分析&#xff1a;优雅解决软件设计中的复杂性 在软件设计中&#xff0c;我们常常面临着需要将不同接口或类协调工作的情况&#xff0c;同时还要满足灵活性和可扩展性的需求。为了应对这些挑战&#xff0c;适配器模式和装饰器模式应运而生&#xff0c…

IDEA Debug小技巧 添加减少所查看变量、查看不同线程

问题 IDEA的Debug肯定都用过。它下面显示的变量&#xff0c;有什么门道&#xff1f;可以增加变量、查看线程吗&#xff1f; 答案是&#xff1a;可以。 演示代码 代码如下&#xff1a; package cn.itcast.attempt.threadAttempt.attempt2;public class Test {public static …

GFS分布式文件系统

目录 一、GlusterFS简介 二、GlusterFS特点 1.扩展性和高性能 2.高可用性 3.全局统一命名空间 4.弹性卷管理 5.基于标准协议 三、GlusterFS 术语 1.Brick&#xff08;存储块&#xff09; 2.Volume&#xff08;逻辑卷&#xff09; 3.FUSE 4.VFS 5.Glusterd&#xf…