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

news2024/12/29 10:26:45

在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.coloradmin.cn/o/820595.html

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

相关文章

WMI 介绍

1.什么是WMI WMI的全称是Windows Management Instrumentation,即WIndows管理规范。它允许通过一个公共接口访问多种操作系统的构成单元,实现对操作系统的信息获取及管理操作。 Windows提供了一个WMI测试器&#xff0c;使得查询这些内容变得尤为方便。按下"winR&q…

安装nvm之后,node -v 提示‘node‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

1. 检查有没有执行这个命令&#xff1a;nvm use [nodejs version name] 2. 检查nvm安装位置同级&#xff0c;有没有nodejs文件夹&#xff0c;是一个快捷键&#xff01;如果有一个其他的nodejs&#xff0c;把它删掉&#xff0c;然后到cmd中&#xff0c;重新nvm install一下&…

Centos7 上安装 redis-dump 和redis-load 命令

一、安装rvm 1、安装GPG keys gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBcurl -sSL http://rvm.io/mpapis.asc | gpg2 --import - curl -sSL http://rvm.io/pkuczynski.asc | g…

SQL-多表

create table course (id int auto_increment primary key comment 主键id,name varchar(10) comment 课程名字 ); insert into course (name) values (java),(linux),(SQL);create table course_student (id int auto_increment primary key comment 主键id,studentid int not…

低代码开发平台源码:基于模型驱动,内置功能强大的建模引擎,零代码也能快速创建智能化、移动化的企业应用程序

管理后台低代码PaaS平台是一款基于 Salesforce Platform 的开源替代方案&#xff0c;旨在为企业提供高效、灵活、易于使用的低代码开发平台。低代码PaaS平台的10大核心引擎功能:1.建模引擎 2.移动引擎 3.流程引擎 4.页面引擎 5.报表引擎 6.安全引擎 7.API引擎 8.应用集成引擎 9…

MySQL执行一条select语句,执行过程怎么样

执行一条select语句&#xff0c;执行过程怎么样 连接器 与客户端进行 TCP 三次握手建立连接&#xff1b;MySQL基于TCP协议进行传输的校验客户端的用户名和密码&#xff0c;如果用户名或密码不对&#xff0c;则会报错如果用户名和密码都对了&#xff0c;会读取该用户的权限&…

湖南省物业满意度研究(群狼调研)

01 行业现状 随着湖南省物业行业的蓬勃发展&#xff0c;物业管理走向规范化的道路。近年来&#xff0c;湖南省物业管理行业迎来飞速发展的黄金时期&#xff0c;全省物业服务相关企业已超过9万家&#xff0c;其中长沙市占据了四成以上。 数据来源&#xff1a;天眼查公开数据 在…

直播丨如何用最新的 Serverless 技术让文化古籍“活过来”?

当前&#xff0c;古籍数字化面临技术难度高、资金缺口大、人才紧张等难点。云计算和人工智能技术可以高效实现古籍产品化、可视化、平台化&#xff0c;不仅使其保存形式迈上一个新台阶&#xff0c;还可以有效降低用户阅读门槛。 本次 Serverless 圆桌派 特别邀请上海慧游文化 …

TCGA数据批量运行Coxph函数

df数据框形如&#xff1a; djs.coxph <- function(df,genelist){library(survival)library(survminer)dir.create("./survival")setwd("./survival")# 准备好的生存分析数据框&#xff0c;变量中包括OS.time,OS以及values of gene expression df <…

论文阅读 - Few-shot Network Anomaly Detection via Cross-network Meta-learning

论文链接&#xff1a;https://arxiv.org/pdf/2102.11165.pdf 目录 摘要&#xff1a; 引言 问题定义 方法 Graph Deviation Networks Cross-network Meta-learning 摘要&#xff1a; 网络异常检测旨在找到与绝大多数行为显着不同的网络元素&#xff08;例如节点、边、子图…

河北沃克仓储解决方案最新布局|HEGERLS四向穿梭车在高标仓和楼层仓中的应用

河北沃克金属制品有限公司是业内十分稀缺可提供整体物流仓储解决方案并落地的企业&#xff0c;既拥有自主研发和生产等一整套核心软硬件的能力&#xff0c;又具备丰富的整体方案规划与实施经验。经过多年积累和开拓&#xff0c;河北沃克金属制品有限公司业务已拓展覆盖近众多行…

如何列出phpMyAdmin左侧菜单中的所有表格 - 不分页 - 显示数据库所有的表

效果图 原来 优化后 步骤 点击logo&#xff0c;回到首页 点击设置 》 导航面板 》 导航树 》 节点中最大项数 》 应用 ok

Windows下RocketMQ的启动

下载地址&#xff1a;下载 | RocketMQ 解压后 一、修改runbroker.cmd 修改 bin目录下的runbroker.cmd set "JAVA_OPT%JAVA_OPT% -server -Xms2g -Xmx2g" set "JAVA_OPT%JAVA_OPT% -XX:MaxDirectMemorySize15g" set "JAVA_OPT%JAVA_OPT% -cp %CLASSP…

jmeter之接口测试(http接口测试)

基础知识储备 一、了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服务器--服务器 二、了解基础接口知识&#xff1a; 1、什么是接口&#xff1a;前端与后台之间的…

MySQL 的 Join 查询及 Hash Join 优化 | StoneDB 技术分享会 #3

StoneDB开源地址 https://github.com/stoneatom/stonedb 设计&#xff1a;小艾 审核&#xff1a;丁奇、宇亭 编辑&#xff1a;宇亭 作者一&#xff1a;徐鑫强&#xff08;花名&#xff1a;无花果&#xff09; 电子科技大学-计算机技术-在读硕士、StoneDB 内核研发实习生 作…

BES 平台 SDK之代码架构讲解二

本文章是基于BES2700 芯片&#xff0c;其他BESxxx 芯片可做参考&#xff0c;如有不当之处&#xff0c;欢迎评论区留言指出。 BES 平台 SDK之代码架构讲解一_谢文浩的博客-CSDN博客 上篇文章粗略的对整个SDK 目录下的文件进行了说明&#xff0c;接下来会对SDK 比较详细的介绍。…

C语言实用调试详解

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

HCIP 重发布+路由策略总结

重发布 在同一个网络拓结构中&#xff0c;如果存在多种不同的路由协议&#xff0c;由于不同路由协议的机制各有不同&#xff0c;对路由的处理也不相同&#xff0c;这就在网络中造成了路由信息的隔离&#xff0c;在路由器的边界路由器上&#xff0c;将某种路由协议的路由信息引…

[网络工程师]-网络规划与设计-网络故障分析与处理

网络环境越复杂,发生故障的可能性越大,引发故障的原因也就越难确定。网络故障往往具有特定的故障现象。这些现象可能比较笼统,也可能比较特殊。利用特定的故障排查工具及技巧,在具体的网络环境下观察故障现象,细致分析,最终必然可以查出一个或多个引发故障的原因。一旦能…

gitlab上传代码

输入 git clone https地址&#xff0c;此地址可以在&#xff0c;gitlab项目上拷贝到本地&#xff0c;看本地电脑会出现在gitlab上新建的项目&#xff0c;并进入该目录下 将要上传的代码拷贝到该目录 依次输入一下代码 git init &#xff08;用于在目录中创建新的 Git 仓库。…