获取相对XPath路径解决动态元素定位问题

本文介绍了在UI测试中如何处理动态元素的定位问题,通过XPath的相对路径和多条件查询,结合MeterSphere进行脚本设置,成功定位动态元素并执行测试。方法包括单一属性和多属性查询,以及XPath函数如contains、starts-with和and的使用。
摘要由CSDN通过智能技术生成

动态元素:获取相对XPath值

动态元素

在UI测试过程用,很多元素都没有定义唯一属性,并且XPath值也包含动态部分。如:
在这里插入图片描述
此页面中【工作空间】元素的xpath值就是动态的:
//*[@id=“aa36172b-3518-4159-7de3-54345fb4f5bd”]/div[2]/ul/li[1]/ul/li[2],
类似这样的元素,我们在做UI测试的时候,就不能使用XPath属性来定位,并且该元素又没有定义,其他的属性来鉴别唯一性,这时我们在做UI测试就需要使用XPath的相对路径来解决。

获取动态元素的相对XPath

1、单一属性查询定位元素

使用XPath查询方法,通过元素显示的“名称”判断能否确定该元素。
在查询框中输入://li[contains(text(),“工作空间”) ]
结果:显示2个元素,

在这里插入图片描述

2、多条件查询定位元素

因为查找结果是2个元素,所以在UI测试脚本中,还是无法使用,此时需要再添加一些属性确定元素的唯一性。把元素的【role】属性加入到查询条件中:
//li[contains(text(),“工作空间”) and @role=“menuitem”],再次查询
在这里插入图片描述

MeterSphere UI测试

1、脚本设置

工作空间元素,元素定位类型选择“xpath”,路径为://li[contains(text(),“工作空间”) and @role=“menuitem”]
在这里插入图片描述

2、UI执行

执行结果:全部成功
在这里插入图片描述
查看特殊节点【工作空间】
在这里插入图片描述

查看执行结果当前截屏,正确定位工作空间菜单,并打开工作空间页面
在这里插入图片描述

三、XPath查询元素方法

1、直接查找

1.1、 /html/body/div[1] 获取body中,第一个div节点

在这里插入图片描述

1.2 /html/body/div[last()-1] 获取body 中,倒数第二个div节点

在这里插入图片描述

1.3 //html/body/div[last()] 获取body 中,最后一个div节点

1.4 /html/body/div[@id=“app”] 获取body 中,id属性值为app的div节点

在这里插入图片描述

2、带函数查找

2.1 包含:contains

div & li 节点:text属性定位

//li[contains(text(),“工作空间”)] :选取text值包含"工作空间"的li节点
//div[contains(text(),“工作空间”)] :选取text值包含"工作空间"的div节点**

在这里插入图片描述

在这里插入图片描述

div & li 节点:id&其他 属性定位

//li[contains(@role,“men”)]:选取role属性包含‘men’的li节点
//div[contains(@id,“app”)] :选取role属性包含‘men’的div节点
在这里插入图片描述
在这里插入图片描述

2.2 starts-with

//div[starts-with(@id,“mi”)] 选取id值以mi开头的div节点
//li[starts-with(@role,“me”)] 选取role值以me开头的li节点
在这里插入图片描述
在这里插入图片描述

2.3 and

//li[contains(text(),“工作空间”) and @role=“menuitem”] : 选取text 值包含“工作空间”,并且role属性等于 “menuitem”值的li元素

在这里插入图片描述

2.4 text ()

//li[contains(text(),“工作空间”)] : 选取text 值包含“工作空间”值的li元素。
在这里插入图片描述

3、复杂节点定位

通过子节点定位父节点的兄弟节点

这样的节点一般是出现在表格列表选择框的定位。比如在查询结果列表中,第一列为选择框切需要把信息ID传给下个操作/页面。
在这里插入图片描述
动态定位指定记录的选择框,可以先从上图右侧展示的,从1-2-3-4依次顺序,就能定位到指定记录的选择框。即:通过子节点找到父节点,再从父节点找到他前面的兄弟节点,然后再从这个兄弟节点定位他的子节点“选择框”。
xpath:
//label[text()=“THAR202422010000000199”]/parent::td/preceding-sibling::td/input

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值