做 RPA 开发的朋友,你有没有过这种经历? 你花了一天,做了个自动化流程,测试的时候,跑的好好的,结果过了两天,再跑,就报错了,说 “找不到元素”。 你改了半天,好不容易改好了,过两天,又报错了,你...
做 RPA 开发的朋友,你有没有过这种经历?
你花了一天,做了个自动化流程,测试的时候,跑的好好的,结果过了两天,再跑,就报错了,说 “找不到元素”。
你改了半天,好不容易改好了,过两天,又报错了,你都快疯了。
这就是因为,你的元素定位,没做好,不稳定。
今天我就给你 8 个,元素定位稳定性优化的核心技巧,学会了,你的流程,跑几个月都不会报错,稳定性提升 99%。
为什么你的元素定位,总是不稳定?
很多人做元素定位,就只用 ID,或者只用坐标,结果,网页一更新,ID 变了,窗口一挪,坐标变了,就找不到元素了。
元素定位的核心,就是要找到一个,不管网页怎么变,都能唯一标识这个元素的特征,这样,不管怎么变,你都能找到它。
这 8 个技巧,帮你搞定稳定性
1. 别只用 ID,用多属性组合定位
很多网页的 ID,是动态的,每次打开都不一样,比如id="button12345",后面的数字,每次都变,你用 ID 定位,下次就找不到了。
你要用多属性组合,比如tag=div AND text=确定 AND class=btn,组合起来,就算 ID 变了,这些属性不变,你也能找到元素。
2. 用 XPath 的文本定位,更稳定
对于按钮、链接这些,有固定文本的,你用 XPath 的文本定位,比如//*[text()='确定'],这个特别稳定,不管其他属性怎么变,文本不变,就能找到。
3. 加等待,等元素加载出来再操作
很多人报错,不是定位不对,是元素还没加载出来,你就去点,当然找不到了。
你别用固定的延时,你用 “等待元素出现”,等元素加载出来了,你再操作,这样就不会错了。
4. 用相对定位,别用绝对定位
很多人用工具生成的 XPath,是绝对定位,比如/html/body/div[1]/div[2]/button,这个特别不稳定,网页的结构一变,就找不到了。
你要用相对定位,从最近的父元素开始,找相对的位置,这样就稳定多了。
5. 处理 iframe 的问题
很多网页,用了 iframe,你要是不切换 iframe,就找不到里面的元素,当然报错了。
你做操作之前,先切换到对应的 iframe,操作完了,再切回来,就好了。
6. 处理 ShadowDOM 的问题
现在很多网页,用了 ShadowDOM,普通的定位,找不到里面的元素,你要先把 ShadowDOM 的根节点拿到,然后再在里面找元素,就找到了。
7. 加重试机制,找不到就重试
就算你做的再好,有时候网络卡了,元素加载慢了,也会找不到,所以你加个重试机制,找不到了,重试 3 次,要是还找不到,再报错,这样,大部分的偶发的问题,都能解决。
8. 用图像识别兜底
要是实在是元素定位不了,比如有些老的软件,没有元素,你就用图像识别,识别那个按钮的图片,然后点击,这个也很稳定,能兜底。
很多人说,元素定位有什么难的,拖个组件就行了。
我倒觉得,元素定位,是 RPA 最核心的基础,你把这个做好了,你的流程的稳定性,就能提升一大截,不然,你做的流程,跑两天就坏了,等于白做。有人说元素定位不用学,工具自动就搞定了,我倒觉得,懂这些技巧,才能做真正稳定的流程,你同意吗?

