影刀RPA新手教程:鼠标自动点击完全指南——坐标点击和元素点击的区别与选择 影刀RPA新手教程鼠标自动点击完全指南——坐标点击和元素点击的区别与选择很多刚接触影刀RPA的朋友第一次打开软件时都会有同一个困惑。“这东西到底能帮我干什么除了打开浏览器点点按钮还能操作别的吗”答案是能而且比你想象的得多。今天这篇咱们就从最最基础的让影刀帮你自动点击鼠标说起。全程用一个真实案例串起来用鼠标自动点击本地ERP软件里的一排按钮。读完这篇你会清楚地知道什么时候用坐标点击什么时候用元素点击不会再踩我当初踩过的那些坑。先搞定影刀的安装——别在第一步就卡住去影刀官网下载安装包一路下一步就行没啥好说的。但有个地方要注意安装完以后一定要装浏览器插件。我用Chrome装完插件在浏览器右上角能看到一个小机器人图标那就说明装对了。没装插件的话后面所有网页自动化的指令都用不了我第一次就是这里没弄明白对着空白的指令列表发呆了半天。桌面应用自动化不需要浏览器插件但建议还是装上后面总要用的。安装完成后打开影刀界面长这样左边是指令面板中间是流程编辑区右边是元素库。第一次看可能会觉得东西好多不用慌咱们今天只用其中很小一部分。home.linyan.cloud 这个地址我平时用来查影刀的各指令用法遇到不懂的指令去翻一翻比在软件里一个个试效率高得多。案例背景为什么要让影刀自动点按钮先说说今天这个案例的场景这样你读的时候知道咱们在干什么。假设你们公司用一套本地部署的ERP系统每天上班第一件事就是打开它点一排按钮入库查询、出库登记、库存盘点、报表导出……一共8个按钮每个都要点进去操作一遍纯手工每天至少要花20分钟。这活没啥技术含量但每天都得做烦得要命。影刀可以帮你把这一整套点击操作全部自动化你只需要坐在那看它自己跑就行。但问题来了让影刀点按钮有两种完全不同的方式。一种叫元素点击一种叫坐标点击。这两种方式到底有啥区别什么时候用哪个这就是今天这篇的核心内容。元素点击让影刀看见那个按钮元素点击是影刀最常用的点击方式原理是影刀先看一下界面上的按钮这过程叫捕获元素记住这个按钮的特征然后下次运行时精准地点它。用元素点击的第一步是捕获元素。在影刀里点捕获元素按钮鼠标会变成一个十字准星把准星移到你想点的按钮上点一下左键影刀就会把这个按钮的信息记录下来存到元素库里。捕获完以后在流程里拖一个点击元素指令选择刚才捕获的那个按钮搞定。我第一次捕获元素的时候怎么点都捕获不到后来才发现目标窗口必须处于可见状态如果按钮被别的窗口挡住了影刀是看不到它的。这是新手最容易踩的第一个坑。元素点击最大的好处是只要按钮还在那个位置界面没改版不管窗口移到屏幕哪里不管窗口大小怎么变影刀都能准确点中。因为它找的是按钮这个对象本身不是屏幕上某个固定的坐标点。坐标点击告诉影刀屏幕的哪个位置点一下坐标点击就粗暴多了原理是你告诉影刀在屏幕坐标(x500, y300)这个位置点一下影刀就乖乖地在那个位置点一下不管那里是什么东西。设置坐标点击的时候影刀会让你填两个数字X坐标和Y坐标。X是从屏幕左边往右数的像素数Y是从屏幕上边往下数的像素数。左上角是(0, 0)往右X变大往下Y变大。那这两个数字怎么知道呢影刀提供了一个抓取坐标的功能点一下然后在屏幕上想要的位置点一下左键坐标就自动填好了。坐标点击有个大问题它是写死的。如果你今天录的时候窗口在屏幕左边明天运行时窗口被你不小心拖到了右边坐标点击就会点空——因为屏幕那个位置已经没有按钮了。我当初做一个自动化流程在自己电脑上跑得好好的发给同事用怎么都点不准排查了一下午才发现是他的电脑屏幕分辨率跟我不一样导致同样的坐标点到了不同的位置。元素点击 vs 坐标点击到底选哪个这张对比表我建议你收藏后面做流程的时候经常要翻回来参考。元素点击的优点窗口位置变了也能点准窗口大小变了也能点准屏幕分辨率不同也能点准是最智能的方式元素点击的缺点有些软件的元素捕获不到特别是老旧的桌面软件捕获元素的时候目标窗口必须可见如果软件改版了按钮属性变了要重新捕获坐标点击的优点店群矩阵自动化突破运营极限任何地方都能点哪怕是捕获不到元素的软件逻辑简单不需要理解元素这个概念录制速度快坐标点击的缺点窗口位置不能变一变就点不准屏幕分辨率必须跟录制时完全一致别人用你的流程大概率跑不通我的建议是能捕获到元素的一律用元素点击。捕获不到的才考虑坐标点击。今天这个ERP案例里我会先尝试用元素点击如果遇到捕获不到的按钮再用坐标点击作为备选方案。指令详解点击元素指令的各个参数拖一个点击元素指令到流程里你会看到一堆参数新手一看就懵。咱们一个个说都是大白话。“目标元素”就是你要点哪个按钮从元素库里选。这没啥好说的捕获了就能选到。“点击类型”有单击、双击、右键单击三种。大多数情况用单击就够了需要打开文件或文件夹的时候用双击需要弹出右键菜单的时候用右键单击。“鼠标按键”通常是左键有些特殊软件可能要用右键或中键。“执行前等待”点这个按钮之前等几秒钟。为什么要等因为有些按钮要等界面加载完才能点不等待的话可能点到一个还没加载出来的位置就报错了。“超时时间”等多久还没找到这个按钮就放弃报一个找不到元素的错误。默认是20秒一般不用改。“失败后继续”如果找不到这个按钮是直接报错停止还是跳过去继续执行后面的指令。初学者建议先不勾选报错了你才知道哪里出问题了。我第一次用的时候所有参数都用的默认值结果因为ERP系统加载慢按钮还没出来影刀就已经去点了当然点不到。后来我在每个点击指令前面都加了一个等待元素出现指令问题就解决了。用XPath和CSS定位那些捕捉不到的按钮有些按钮用影刀的捕获元素功能死活捕获不到捕获出来是整个窗口或者是一大片区域就是精确定位不到那个按钮。这时候就要用到XPath或者CSS选择器了这是网页自动化里的高级技巧但咱们今天先用大白话讲清楚。XPath可以理解成元素的地址。比如一个按钮在网页上的位置是html里面有个bodybody里面有个divdiv里面有个button那这个按钮的XPath就是把这个路径写下来/html/body/div/button。当然实际写起来不是这么写的实际的XPath长这样//button[idsubmit-btn]意思是找所有button标签里id属性等于submit-btn的那个。CSS选择器是另一种写法更简洁一些。同样的按钮用CSS写就是button#submit-btn。在影刀里捕获元素以后在元素库的编辑元素界面可以手动改XPath或者CSS选择器让定位更精准。我当初遇到一个下拉菜单怎么捕获都只能捕获到整个菜单区域捕获不到里面具体的选项。后来在元素编辑里手动改了XPath用//li[contains(text(),选项A)]这样的写法意思是找所有li标签里文字包含’选项A’的那个一下子就精准定位到了。变量出场让点击的内容动起来如果今天要点的按钮名字是固定的那前面说的就够用了。但真实场景里经常遇到这种情况今天要点击入库查询明天要点击出库登记按钮名字是变化的。这时候就要用到变量了。变量可以理解成一个装东西的盒子盒子的名字你定盒子里装的东西可以变。比如我定义一个变量叫按钮名称今天里面装的是入库查询明天里面装的是出库登记。然后在点击元素指令里不直接写点击’入库查询’按钮而是写点击按钮名称这个变量对应的按钮。这样只要改一下变量的值整个流程就能点不同的按钮不用重新录制。变量的类型有几种字符串就是一段文字数字整数或小数列表一排东西像Excel里的一列字典像通讯录一个名字对应一个电话号码布尔值只有是和否两种值今天的案例里咱们主要用字符串类型的变量用来存按钮的名称。定义变量用设置变量指令给变量赋值用给变量赋值指令。我第一次用变量的时候把变量名写成了中文按钮名称后来发现在某些指令里中文变量名会出问题建议还是用英文或拼音比如btn_name。For循环让影刀把一排按钮全部点一遍今天的案例里ERP系统里有8个按钮要挨个点一遍。如果不用循环就要拖8个点击元素指令每个指令点一个按钮流程会很长很冗余。用For循环的话只需要写一次点击按钮的逻辑然后让影刀重复执行8次每次点列表里的下一个按钮。For循环有几种类型For次数循环指定循环几次比如循环8次ForEach列表循环把一个列表里的东西挨个取出来处理While条件循环只要某个条件成立就一直循环无限循环一直跑直到里面遇到退出循环指令今天的场景最适合用ForEach列表循环。具体操作是先把8个按钮的名称存在一个列表变量里比如按钮列表 [入库查询, 出库登记, 库存盘点, 报表导出, ...]然后用ForEach循环每次从列表里取一个按钮名称去点对应的按钮。循环里要用到一个很重要的概念“循环项”。每一次循环影刀会自动把列表里的下一个值赋给循环项变量你在循环体里引用循环项就能拿到当前这次循环要处理的按钮名称。我第一次写循环的时候在循环体里直接写了按钮的名称写死了结果8次循环每次都点同一个按钮排查了半天才发现这个问题。If判断有些按钮不是每次都要点真实场景里还有这种情况8个按钮里有些只有在特定条件下才需要点。比如报表导出按钮只有今天是每月最后一天的时候才需要点平时不用点。这时候就要用到If条件判断指令了。If指令的逻辑是先判断一个条件是否成立成立了就执行If里面的指令不成立就跳过。条件可以是各种判断比较两个数字的大小判断一段文字里是否包含某个关键词判断一个文件是否存在判断今天是不是每月最后一天……今天的案例里咱们可以这样写先获取今天的日期判断是不是每月最后一天如果是才执行点击报表导出按钮的指令。If指令还可以配合Else使用如果条件成立做A不成立做B。还可以嵌套If里面再套一个If处理更复杂的判断逻辑。我当初做一个流程要判断Excel里某一行的某个单元格是否为空为空就跳过不为空就处理。结果写条件的时候写成了单元格 None这是Python的写法影刀里应该用为空判断指令两者语法不一样报错报得我一头雾水。Try-Catch让流程报错也不至于全崩自动化流程跑起来以后最怕的就是中途报错整个流程停在那里后面的步骤都执行不了。比如今天点第3个按钮的时候刚好网络卡了一下按钮没加载出来影刀找不到元素就报错了后面的5个按钮就没机会点了。Try-Catch指令就是用来解决这个问题的。Try块里放可能会报错的指令如果Try块里报错了流程不会停止而是跳到Catch块里执行预先定义好的出错以后的处理方案。处理方案可以是打个日志记录一下哪里出错了等几秒以后重试一次给管理员发个通知跳过这个错误继续跑后面的步骤今天的案例里咱们可以把每个按钮的点击指令都放在一个Try块里如果某个按钮点失败了记录错误以后继续点下一个不至于一个按钮卡住全盘皆输。我建议所有重要的自动化流程都加上Try-Catch这是让流程稳定运行最关键的一个习惯。没有Try-Catch的流程我称之为玻璃流程——看起来漂亮一碰就碎。鼠标键盘图像自动化指令族影刀里跟鼠标相关的指令除了点击元素还有一大堆今天一并介绍一下后面遇到类似场景直接用。移动鼠标把鼠标光标移到指定位置不点击。有时候你需要先把鼠标移到某个位置再进行后续操作就用这个。双击快速点两下左键。打开文件、打开文件夹、编辑单元格都用得上。右键单击点一下右键弹出右键菜单。有些操作必须通过右键菜单才能完成。鼠标拖拽按住左键不松把鼠标移到另一个位置再松手。拖动文件、拖动界面元素用的就是这招。这个我们后面有专门的一篇来讲。滚动鼠标滚轮让界面往上滚或往下滚。网页懒加载、下拉刷新都要用到这个。键盘输入模拟人在键盘上打字。这个我们下一篇会详细讲。按下快捷键模拟按下CtrlC、CtrlV、AltTab这样的组合键。这个也是下一篇的重点。截屏把当前屏幕或某个窗口截图保存成图片文件。今天的案例里点完每个按钮以后可以截一张图作为执行记录后面出问题了有据可查。用Python扩展影刀的能力影刀自带的指令已经很丰富了但有些特别复杂的需求用指令拼起来会很麻烦这时候可以用Python代码来搞定。影刀支持在流程里嵌入Python代码用执行Python代码指令就行。比如今天的案例里要判断今天是不是每月最后一天用影刀指令来拼的话要用到日期函数、条件判断、变量赋值要拖好几个指令。用Python的话三行代码就搞定了importcalendarfromdatetimeimportdatetime todaydatetime.now()is_last_day(today.daycalendar.monthrange(today.year,today.month)[1])然后在影刀里用If指令判断is_last_day这个变量是True还是False决定要不要点报表导出按钮。Python还能做很多影刀指令做不了的事情调用第三方的API接口处理复杂的Excel公式发送HTTP请求操作数据库做图像识别OCR……我第一次在影刀里用Python的时候在代码里用了print()想打印点调试信息结果发现影刀里的Python代码的print输出是看不到的要用影刀提供的xbot.print()才能把信息输出到影刀的日志里。这是个小坑记一下。电商场景实战点击商品列表里的编辑按钮前面讲的都是ERP系统的案例影刀用得最多的场景其实是电商。比如你在淘宝或拼多多有个店每天要挨个点击商品列表里的编辑按钮修改库存数量或价格。商品可能有几十个上百个纯手工点要累死。用影刀来做的话核心逻辑跟今天的ERP案例一模一样先捕获编辑按钮这个元素然后用相似元素循环把每一行的编辑按钮都点一遍。“相似元素是影刀里一个非常重要的概念页面上有很多个长得差不多的按钮比如每一行都有一个编辑按钮它们属于相似元素”可以用一个循环全部抓到。捕获相似元素的时候先捕获第一个然后在捕获界面里点捕获相似元素影刀会自动帮你把剩下的都捕获到。我第一次捕获相似元素的时候捕获完第一个以后不知道下一步该点哪里在界面上乱点了一通结果捕获出来的是一串乱七八糟的元素。后来才知道捕获完第一个以后直接在界面上点第二个相似的元素影刀就能自动识别出规律把剩下的都找出来。temu店群自动化报活动案例飞书通知让影刀跑完以后自动通知你流程设置好以后你肯定不想坐在电脑前盯着它跑。影刀可以在流程跑完或者跑出问题的时候自动发一条飞书消息通知你。配置飞书通知的步骤是在飞书开放平台创建一个应用或者用现有的拿到应用的App ID和App Secret在影刀的系统联动里配置飞书连接在流程里用发送飞书消息指令今天的案例里咱们可以在流程最后加一个飞书通知“ERP按钮自动点击任务已完成共点击8个按钮0个失败。”如果流程里用了Try-Catch还可以在Catch块里发通知“ERP按钮点击失败失败按钮XXX请人工检查。”飞书通知配置好以后不止能发文字消息还能发卡片消息、发文件、发图片。我平时把影刀流程配成每天早上8点自动运行运行结果直接发到飞书群里团队成员都能看到不用每个人都去检查。调试技巧流程不工作了怎么排查流程写好了点运行结果没反应或者点到一半报错了怎么办影刀提供了几种调试工具学会用它们排查问题效率高10倍。第一步看运行日志。流程运行的时候下方会实时显示每条指令的执行情况哪条指令报错了、报错信息是什么都写在里面。大多数问题看报错信息就能定位到。第二步打断点单步调试。在某条指令前面点一下出现一个红点这就是断点。流程运行到断点这里会暂停你可以查看当前所有变量的值确认数据对不对再点继续让流程继续跑。第三步用打印日志指令。在关键位置加一条打印日志指令把变量的值输出到日志里运行时就能看到数据是怎么变化的。我排查问题最常用的套路是在报错指令的前面加一个打印日志把相关的变量都打印出来看看是哪一步数据出了问题。今天的案例里如果某个按钮点不到我会在点击指令前面打印一下当前要点的按钮名称是XXX确认一下变量的值对不对。命名规范和版本管理写得爽后面更要维护得爽流程写完了能跑只是第一步。后面要改需求、要给别人用、要在多台电脑上部署如果流程写得乱七八糟改起来会非常痛苦。几个我踩过坑总结出来的规范指令命名要有意义。不要叫点击元素1、“点击元素2”要叫点击ERP入库查询按钮、“点击ERP出库登记按钮”一看就知道是干什么的。子流程该拆就拆。如果主流程超过30条指令考虑把其中一段逻辑拆成一个子流程。今天的案例里点击某个按钮并等待加载完成这个逻辑要重复8次完全可以封装成一个子流程主流程里调用8次就行改起来也只需要改子流程一处。版本号要记录。影刀有版本管理功能每次发一个稳定版本以后记得写清楚这次改了什么。我之前改了一个流程没记录版本后来发现新版本有问题想回退完全想不起来旧版本是什么逻辑了。常见报错速查表最后列一下今天这篇涉及的最常见的几个报错以及解决办法。报错1找不到元素Element not found原因按钮还没加载出来或者按钮的属性变了或者窗口被挡住了。解决在点击指令前面加等待元素出现指令检查目标窗口是否可见如果是网页检查网页是否跳转了。报错2数组转换为字符串失败Can not convert Array to String原因把整个列表直接填进了只能填单个文本的输入框里。解决如果是循环里用循环项而不是整个列表变量如果是列表里取某个值用列表[下标]的写法。报错3元素属性变化导致捕获失效原因软件改版了按钮的id或class属性变了。解决重新捕获元素或者改用XPath/CSS里不太容易变化的属性来定位。报错4坐标点击在别人电脑上跑不准原因屏幕分辨率不同。解决改用元素点击如果必须用坐标点击在流程开头加一个屏幕分辨率判断不同分辨率用不同的坐标。今天的完整流程长什么样把今天讲的所有内容串起来完整的ERP按钮自动点击流程是这样的启动影刀新建一个应用逐个捕获ERP系统里的8个按钮存到元素库定义一个列表变量里面放8个按钮的名称用ForEach循环遍历这个列表循环体里用点击元素指令点当前按钮用Try-Catch包住点击指令失败就记录日志继续点完一个按钮以后用等待指令等2秒让界面加载完optionally点完每个按钮以后截一张图作为执行记录循环结束后发飞书通知“任务完成”测试运行用断点调试确认每一步都对保存发版配置定时任务每天自动跑这个流程我实际用了三个月每天帮我节省20分钟三个月就是20个小时。这20个小时拿来干什么不好#影刀RPA #RPA教程 #鼠标自动化 #零基础入门 #元素点击 #坐标点击作者林焱