应用的测试场景
在同一个窗体下,需要依次点击表格中每一个都是红色字体的按钮。
通过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就需要先转换格式再引用变量
以上,就是实现依次获取具有相同属性的元素的全过程啦