一、问题出现场景
需要循环连续点击多个相似元素,执行自动化处理,例如依次点击导航栏所有元素,依次点击所有商品等,期间第一次循环正常运行,第二次点击循环元素时找不到元素(必现)
二、问题原因
底层逻辑,执行循环相似元素指令之前,会先获取界面上的相似元素,进行相似元素循环,循环期间元素发生变化,不会再重新获取相似元素,导致出现找不到元素。即点击第一次相似元素之后,页面/元素刷新,第二次循环则无法正常执行。
三、解决方案
1.网页:判断是否可通过后退的方式返回初始网页,每次循环后后退至初始网页再次循环
2.相似元素点击之后界面发生变化,无法返回初始界面,以循环点击手机抖音商城商品信息加入购物车为例,流程如下:
循环点击每个类别-------------------->点击立即购买----------------------->返回-------------------->再次点选规格



此时第二次循环元素对象发生变化,但相似元素位置不变,因此可以重新获取相似元素列表,然后用相似元素位置下标进行定位点击,如下图。
3.相似元素位置发生变化,但文本不变,可以用动态元素定位按钮,以循环点击切换店铺为例,每次切换之后店铺列表发生变化,可以获取相似元素文本列表的方式,循环列表,将按钮文本设置为全局变量,以动态元素的方式,给元素属性增加一个innerText属性,设置一个全局变量(店铺文本),通过改变全局变量的值,改变元素文本属性进行定位元素。如下图