影刀RPA教程:如何判断元素是否可见?

文摘   2024-11-02 12:02   山西  

今天接着上次的教程,聊聊RPA(机器人流程自动化)工具“影刀”的一个新指令:IF元素可见(web)

作为一名每天都和代码打交道的程序员,我深知这个指令的作用有多大,尤其是在自动化测试和网页数据抓取时,这个“检测网页元素是否可见”真的可以说是神技。

这个指令是啥

这个IF元素可见指令,简单来说就是用来判断某个元素在网页上是否可以被看到。很多时候,网页元素虽然存在于DOM(Document Object Model)结构中,但因为被隐藏、被遮挡或者CSS控制而不可见,导致我们肉眼和自动化脚本都没法直接操作这些元素。

配置项说明

每次用这个指令之前,我都会先花几分钟捋一下它的配置项。理解它就像理解你女朋友说的“随便”是“你随便我不高兴”和“你敢随便试试”之间的区别。影刀这款RPA工具,在设计配置项的时候尽量做得简明扼要,但还是有些需要特别注意的地方。

1、网页对象

这个网页对象就好比是你要操作的浏览器窗口。比如你之前用“打开网页”指令打开了一个百度页面,那么这个网页对象就是指这个百度页面。只有在指定了具体网页对象后,影刀才知道去哪个窗口查找指定的元素。

2、检测网页是否可见

这是指令的核心配置项之一,你可以选择“可见”或者“不可见”。这两个选项的区别在于:“可见”表示这个元素在网页中没有被隐藏或遮挡,可以正常显示在屏幕上;而“不可见”则表示元素被隐藏、CSS属性设置为不可见或者超出了可视范围。 用人话说,就是“我能看到”和“我看不到”。

2、操作目标

这个选项是指你要操作的网页元素。比如,检测一个按钮是否可见,或者输入框是否可见。可以从元素库中选择之前捕获的元素作为目标,如果没有,可以用“捕获新元素”功能去新建一个捕获。这里要注意的是,捕获新元素时,尽量用深度模式,因为有些隐藏得很深的元素,如果不用深度模式,可能抓不到。

判断百度搜索框是否可见

好了,讲了半天原理,我们来看看实际例子。影刀官方文档给了一个很简单的流程:打开百度网页 -> 检测搜索框是否可见 -> 如果可见,输出“百度一下吧” -> 如果不可见,输出“so sorry”

这段流程的逻辑可以说是一目了然:影刀先打开百度,然后判断这个搜索框在页面上能不能看见,如果能看到,就执行一个操作,如果看不到,就执行另一个操作。

我在实际操作中还遇到过更多有趣的场景,比如:

1、广告弹窗:大家都有过这种经历吧?某些网页喜欢在加载的时候弹出各种广告,而这些广告通常覆盖了你真正想操作的元素,这时候用“IF元素可见”就能判断广告是否出现,如果广告出现,可以先把它关闭。

2、动态加载内容:有些页面内容是动态加载的,比如你往下拉时,内容才逐渐显示出来。这时候,你可以用这个指令判断某个元素是否已经加载并可见,如果还不可见,可以让脚本等一会儿或者继续下拉。

3、错误提示:做自动化测试时,经常需要判断某些错误提示是否弹出,比如“用户名或密码错误”。这时候用“IF元素可见”就能轻松搞定:如果提示出现,记录错误日志;如果没有出现,继续后续操作。

实战场景分析

我就拿我前段时间用“IF元素可见”指令做的一个自动化测试项目来聊聊。那时候,我在公司负责一个复杂的表单提交流程。这个表单可不是普通的表单,页面设计师不知道从哪学来的骚操作,各种隐藏字段、动态展示元素,还有一些输入框会根据用户选择的内容来显示或隐藏。

于是,我用影刀的“IF元素可见”指令来做了一个智能判断流程。比如:当用户选择“企业用户”时,系统会多出一个企业注册号输入框,而这个框默认是隐藏的。所以,我就写了这样一个流程:

打开注册页面 -> 选择用户类型为“企业用户” -> 判断企业注册号输入框是否可见 -> 如果可见,填写企业注册号;如果不可见,提示“未找到企业注册号输入框”并截图保存。

这种流程让整个自动化测试变得更加灵活,不需要我写一大堆if-else语句去硬编码判断每种情况,也不用担心因为某些小改动导致流程崩溃。

捕获元素时的技巧分享

既然聊到了“IF元素可见”,我们就不得不提一下它的“捕获元素”功能。捕获元素是指令最重要的前置操作,就像打游戏一样,装备不好,再厉害的技能也施展不出来。

1、选择适当的捕获模式:影刀提供了“普通模式”和“深度模式”两种捕获方式。普通模式就像用手机拍照一样,简单快捷,但有时候可能拍得不够细腻(漏抓一些隐藏的元素);而深度模式就像用单反拍摄,虽然费点时间,但能把所有细节都抓下来。

2、使用唯一定位属性:在捕获元素时,尽量选择一些独特的属性,比如“id”或者“name”,而不要依赖“class”或者“xpath”定位。因为很多网页设计时会给元素加很多相同的class名,这样捕获的元素就容易出错。

3、检查元素的动态状态:有时候元素的可见性是动态变化的,比如加载页面时,按钮是隐藏的,但加载完毕后才显示出来。所以在捕获前,先确保网页加载完毕,再捕获元素。

结语

总的来说,影刀的“IF元素可见”指令虽然看似简单,但用好了能帮你解决大部分与元素可视性相关的难题。尤其在处理复杂网页时,这个指令可以帮你大大简化流程逻辑。我个人觉得,这种灵活性是其他很多RPA工具无法比拟的。

所以,兄弟们下次再用影刀的时候,不妨试试这个“IF元素可见”指令,看看它能为你带来多少惊喜吧!期待你们在评论区分享更多好玩的使用场景!

现在市面上有很多RPA社群,但免费的却很少,这里推荐一个免费的交流社群,我也会在里面分享一些干货。

如何获取今天的神器?
关注下方公众号,回复关键词:yingdao 获取软件安装包。

点分享

点收藏

点点赞

点在看

程序媛山楂
5年+程序媛,专注于AI编程普及。本号主要分享AI编程、Chat账号、Chat教程、Sora教程、Suno AI、Sora账号、Sora提示词、AI换脸、AI绘画等,帮助解决各种AI疑难杂症。
 最新文章