【selenium】xpath定位中引入变量,实现依次获取/点击具有相同属性的元素

应用的测试场景

在同一个窗体下,需要依次点击表格中每一个都是红色字体的按钮。
通过xpath查看到,每个按钮的style都是一致的
xpath:
//span[@style=‘color: rgb(245, 108, 108);’]
在这里插入图片描述
输入以上xpath,可以查询到重复的4个元素。意味着这个页面需要点击四次。
但是!!并不是每个页面都是恒定的4个,可能存在只有3个或1个该元素的页面。

思路

第一步,
进入页面后,先统计出含有color: rgb(245, 108, 108);的元素的个数
第二步,
使用for循环,依次点击查找到的元素
比如,第一个元素就是
(//span[@style=‘color: rgb(245, 108, 108);’])[1]
第二个就是
(//span[@style=‘color: rgb(245, 108, 108);’])[2]
以此类推,只要[n]中的n每次加一即可

实现步骤

1、统计页面中具有以上属性的元素数量

elements = driver.find_elements(By.XPATH, "//span[@style='color: rgb(245, 108, 108);']")
num = len(elements)   #这里的num就是需要知道的元素数量

2、依次点击的实现过程

初始 i 为1,每次循环 i+1。用 [n] 来控制元素,其中n就是循环中的 i
一般实现是只需要 路径+[n] 就能实现,如 (//span[@style=‘color: rgb(245, 108, 108);’])[1]
但我们这里 i 是变量,且 i 是int格式,所以不能直接用 [i],需要额外进行格式转换,答案如下:
“(//span[@style=‘color: rgb(245, 108, 108);’])[” + str(i) + “]”

for i in range(num):
	i += 1    # 注意!!这里必须要从1开始
	driver.find_element(BY.XPATH, "(//span[@style='color: rgb(245, 108, 108);'])[" + str(i) + "]").click()
	# i是int格式,同时还是变量
	# 引用i就需要先转换格式再引用变量

以上,就是实现依次获取具有相同属性的元素的全过程啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值