影刀RPA新手教程:元素找不到报错完全指南——5种原因和对应解决方法

影刀RPA新手教程:元素找不到报错完全指南——5种原因和对应解决方法

从一次翻车说起

那天下午我信心满满地运行一个刚写好的流程。

结果刚跑了三步,影刀弹出一个大红框。

报错信息很简单:“元素不存在”。

我当时脑袋嗡的一下——明明我刚才捕获元素的时候还好好的啊?

这就是每个影刀新手都会遇到的第一道坎:元素找不到。

今天这篇文章,我用一个真实案例从头到尾拆解给你看。

在这里插入图片描述

案例主线:一个突然找不到"搜索按钮"的流程

先说这个案例的背景。

我写了一个简单的流程:打开京东首页,在搜索框输入"笔记本电脑",点击搜索按钮。

元素在编辑时捕获得明明白白,运行到点击搜索时就报"元素不存在"。

下面我按照我当时排查的顺序,一步步带你找到原因。

原因一:页面还没加载完就去点元素了

这是最常见的原因,占我遇到的所有"元素找不到"问题的六成以上。

影刀执行速度很快,有时候指令发出去,网页的HTML还没渲染完。

你的流程里"打开网页"后面直接就是"点击元素",中间没有任何等待。

在这里插入图片描述

我当时就是这么写的。影刀打开了京东首页,搜索框的DOM节点其实还没完全加载出来。

解决方法:在打开网页后面加上等待指令。

我加了这行指令后就好了:

等待网页加载完成(超时30秒)

如果网页不靠谱,还可以更暴力一点:

等待元素出现(目标元素选搜索框,超时10秒)

拼多多店群自动化报活动上架!

这样一来,影刀会等搜索框真的出现了再往下跑。

原因二:XPath写死了动态属性

在这里插入图片描述

很多人(包括当时的我)以为捕获了就万事大吉。

但实际上XPath是影刀自动生成的,有时候它用了会变化的属性。

比如我当时搜索框的XPath是这样的:

//INPUT[@id='key']/../../../../../..//BUTTON[@class='button']

看起来很精准对吧?问题出在那个@class='button'

京东A/B测试时,搜索按钮的class有时会变成button-redbutton-new

class一变,XPath失效,元素找不到了。

解决方法:自己修改XPath,用稳定的特征。

我改成了这样:

在这里插入图片描述

//BUTTON[contains(@class,'button')]

contains的意思是"class包含button就行",不管后面加没加别的。

还有一个更通用的写法,用CSS选择器:

button[class*="button"]

这个CSS选择器的意思是:class属性值里包含"button"的button标签。

影刀支持XPath和CSS两种定位方式,遇到动态属性就换另一种试试。

原因三:iframe嵌套导致找不到

有一次我在写一个后台管理系统流程时,一个按钮怎么也捕获不到。

捕获的时候明明能选中,运行时就报"元素不存在"。

在这里插入图片描述

我反复检查XPath没问题,等待也加了,就是不行。

后来才想起来——查看元素源代码时我发现页面有iframe标签。

iframe就像一个页中页,你看到按钮在页面上,其实它在另一个HTML文档里。

解决方法:先切换到iframe,再操作里面的元素。

在影刀流程中添加一步:

切换到iframe

然后在里面操作元素。操作完记得切回来:

切回主文档

如果不确定是不是iframe的问题,按F12打开开发者工具,按Ctrl+F搜索"iframe"。

在这里插入图片描述

搜到了就是有iframe,没搜到就不是这个问题。

原因四:新窗口打开了没切换

影刀操作的是当前浏览器窗口。有些链接一点,弹出了新窗口。

新窗口打开了,影刀光盯着旧窗口,当然找不到新窗口里的元素。

解决方法:先切换到新窗口。

在影刀流程中加:

切换到最新打开的窗口

然后获取新窗口的网页对象,再操作里面的元素。

有时候新窗口不是直接打开的,是点按钮触发了JS在当前窗口跳转。

在这里插入图片描述

这种就不用切窗口,但要等跳转完成:

等待网页加载完成

原因五:元素被遮挡了

这个比较隐蔽。

我写过一个流程,要点击页面上一个"提交"按钮。

XPath没问题,等待没问题,没有iframe也没有新窗口。

但就是报"元素不存在"。

TEMU店群矩阵自动化运营核价报活动

后来我发现了——页面底部有个浮动的客服弹窗,刚好盖住了"提交"按钮。

在这里插入图片描述

影刀的点击是对元素发click事件的,但页面上有遮罩层挡住了。

解决方法有三个:

  1. 先关闭遮挡元素(如果有关闭按钮)

我加了一步:

点击元素(关闭客服弹窗的X按钮)

  1. 用JavaScript直接点击

执行JavaScript代码

function() {
    document.querySelector('button.submit-btn').click();
}
  1. 滚动页面到目标位置

在这里插入图片描述

滚动到元素可见

我的排查五步法

遇到"元素不存在"不要慌,按这个顺序排查:

第一步:确认页面打开了吗?——检查流程前面的"打开网页"是否成功。

第二步:页面加载完了吗?——在找元素前加等待指令。

第三步:检查XPath和CSS选择器——F12开发者工具里用Ctrl+F搜索你的XPath或CSS,看能不能匹配到元素。

第四步:看有没有iframe或新窗口——源代码里搜iframe,看URL是否变了。

第五步:检查遮挡——把页面往下滚或者检查有没有弹窗、toast提示挡住了。

写在最后

在这里插入图片描述

元素找不到是影刀新手100%会遇到的问题。

我起初也是每次报错就慌,后来慢慢总结出这五步排查法,现在基本三分钟就能定位原因。

记住一句话:报错不是坏事,它是在告诉你哪里需要改进。

你可以把上面的排查步骤做成一个影刀子流程,每次出问题直接调用查看结果。

关于更多RPA学习笔记和踩坑记录,我整理在了 home.linyan.cloud。

#影刀RPA #RPA教程 #元素定位 #自动化测试 #新手入门 #网页自动化 #XPath #CSS选择器 #iframe #报错排查

作者:林焱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值