影刀RPA新手教程:鼠标点击指令的4种模式与选择场景

在影刀里点一个按钮,至少有4种方式:模拟鼠标点击、点击元素、鼠标移动+点击、强制点击。 新手经常随便选一个,结果点不上或者报错。

picture.image 不同场景用不同模式:普通按钮用“点击元素”,隐藏元素用“模拟鼠标点击”,悬浮菜单用“鼠标移动+点击”,弹出层用“强制点击”。

一、四种点击模式速览

picture.image

指令名称实现原理适用场景稳定性
点击元素(标准)直接调用元素点击事件普通按钮、链接、复选框⭐⭐⭐⭐⭐
模拟鼠标点击模拟鼠标在坐标位置点击canvas画布、Flash、地图坐标⭐⭐⭐
鼠标移动+点击先移动鼠标到元素,再点击悬浮菜单、hover触发的下拉⭐⭐⭐⭐

picture.image | 强制点击 | 绕过可见性检查直接点击 | 被遮挡的元素、弹出层穿透 | ⭐⭐(慎用) |

原则:优先用“点击元素”。其他3种只有在标准点击失败时才用。


picture.image

二、点击元素(标准模式):90%场景用它

指令位置:左侧“鼠标键盘” → “点击元素”。

picture.image 这是影刀最稳定的点击指令,直接调用浏览器的元素点击事件。

操作步骤

  1. 捕获目标元素(按钮/链接/图片等)

picture.image 2. 右侧详情面板可设置“模拟点击”和“点击后等待”

  1. 建议勾选“点击后等待”,自动加0.3秒缓冲
# 配置示例

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/29e6c22550b7489b9b99ba75b413076e~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781756436&x-signature=ulPis01%2BR3K8QbBRnyCm9ab8sLc%3D)
点击元素://button[text()='登录']
    # 可选:模拟点击(勾选后更接近真人操作)
    # 可选:点击后等待0.3秒

picture.image 什么时候用不了:

  • 元素被其他层遮挡(比如弹窗覆盖)
  • 元素设置display:none(不可见)
  • 元素在canvas画布里

遇到上面情况,换其他模式。


三、模拟鼠标点击:对付canvas和地图

指令位置:左侧“鼠标键盘” → “模拟鼠标点击”。

不是点击元素,而是在屏幕某个坐标位置点击

操作步骤

  1. 先捕获一个参照元素(比如画布容器)
  2. 设置相对偏移量(x轴偏移、y轴偏移)
  3. 设置点击类型(左键/右键/双击)
# 场景:点击canvas画布上的某个图形(无法捕获元素)
# 步骤1:捕获canvas容器
捕获元素://canvas[@id='game-canvas']  # 参照元素

# 步骤2:模拟点击,设置偏移量(相对canvas左上角)
模拟鼠标点击:参照元素=canvas容器

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/e2fe2ba78b554f4cbfdbffdbc6e8309f~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1781756436&x-signature=rzGwzivlVsrsr0RrNzIYmzGWdBQ%3D)
    X偏移:200像素
    Y偏移:150像素
    点击类型:左键

# 场景2:地图上的某个POI(用坐标点击)
模拟鼠标点击:屏幕坐标(850, 420)

如何找到偏移量?

  1. 用“捕获元素”找到canvas容器
  2. 在浏览器F12里用鼠标悬停,看左上角坐标
  3. 或者截图量像素(不精确,靠试)

容易踩的坑: 屏幕分辨率改变或浏览器缩放后,偏移量会失效。建议用“获取元素位置”指令动态计算。

# 动态计算偏移量:先获取元素的位置和尺寸
获取元素位置://canvas[@id='game-canvas'] → 存入(左上角x, y, 宽, 高)
# 然后模拟点击:x = 左上角x + 200

四、鼠标移动+点击:对付悬浮菜单和hover效果

指令位置:左侧“鼠标键盘” → “鼠标移动” + “点击元素”组合。

picture.image 很多电商的二级菜单、下拉选项,需要鼠标先移上去才会出现。

操作步骤

  1. 先用“鼠标移动”移到触发元素(如一级菜单)
  2. 加一个短等待(0.3-0.5秒),等浮层出现
  3. 再用标准“点击元素”点浮层中的目标
# 场景:淘宝顶部“我的淘宝”悬浮菜单,点击“已买到的宝贝”

# 步骤1:鼠标移动到“我的淘宝”按钮上
鼠标移动://a[contains(text(),'我的淘宝')]

# 步骤2:等待浮层出现(不用太长,0.5秒足够)
固定等待:0.5# 步骤3:点击浮层中的“已买到的宝贝”
点击元素://div[@class='menu-popup']//a[contains(text(),'已买到的宝贝')]

注意: 浮层出现后,移动鼠标直接点可能会让浮层消失(因为鼠标离开了触发区)。解决办法:用“鼠标移动”先把鼠标移到浮层上(可加中间点),再点击。

# 更好的写法:鼠标平滑移动到目标
鼠标移动://a[contains(text(),'我的淘宝')]
固定等待:0.3# 鼠标移动到浮层内(随便一个元素)
鼠标移动://div[@class='menu-popup']
固定等待:0.2# 再点击目标
点击元素://div[@class='menu-popup']//a[contains(text(),'已买到的宝贝')]

五、强制点击:最后一招

指令位置:在“点击元素”指令详情面板,勾选**“强制点击”**。

标准点击失败时,勾选这个选项会绕过可见性检查,强行触发点击。

适用场景

  • 元素被其他div遮挡但实际可点
  • 元素在滚动视窗外(但影刀会自动滚动)
  • 弹出层里的元素被遮罩挡住
# 示例:弹出层关闭按钮被遮罩挡住了,标准点不上
点击元素://div[@class='popup']//button[text()='关闭']
    勾选:强制点击

什么时候不能用强制点击:

  • 元素真的不存在或XPath错了(强制也没用)
  • 元素在iframe里没切换上下文
  • 需要先hover才能出现的元素

警告: 强制点击不保证有正常的效果。比如点击后触发的js可能因为元素不可见而不执行。能不用就不用。


六、实战:登录页面的点击选择

一个典型登录页面有多种点击场景,综合运用:

# 1. 点击“账号密码登录”标签(标准点击)
点击元素://div[contains(text(),'账号登录')]

# 2. 输入用户名密码(省略)

# 3. 点击登录按钮(如果被安全控件遮挡,用强制点击)
判断元素是否存在://button[text()='登录']
如果 存在 == True
    点击元素://button[text()='登录']  # 先标准
否则
    点击元素://button[text()='登录'] 勾选强制点击

# 4. 登录后可能出现验证码弹窗(鼠标移动+点击)
鼠标移动://div[@class='captcha-popup']  # 移到弹窗上
固定等待:0.2秒
点击元素://img[@class='captcha-img']  # 点击验证码图片刷新

七、点击模式选择决策树(手机版)

需要点击?
   │
   ├─ 元素是普通按钮/链接/复选框 → 点击元素(标准)
   │
   ├─ 元素在canvas/Flash/地图里 → 模拟鼠标点击
   │
   ├─ 需要hover才能出现的菜单 → 鼠标移动+点击元素
   │
   ├─ 标准点不上且报“元素不可见” → 强制点击
   │
   └─ 点了没反应但没报错 → 改“模拟鼠标点击”

八、易错速查表

错误现象原因解决方法
点不上但没报错元素需要hover才可点改用“鼠标移动”先悬停
报错“元素不可见”元素被遮挡或display:none勾选“强制点击”或滚动到元素
点错位置(点到隔壁)元素范围大,点击坐标有偏差用“鼠标移动”到元素中心再点
canvas里的点不准偏移量硬编码了用“获取元素位置”动态计算
悬浮菜单一闪而过鼠标离开触发区太快鼠标移动到浮层上再等待0.3秒

九、推荐资源

  • 影刀官方示例流程:“鼠标悬浮菜单自动化”(在流程市场搜索)
  • 我的经验:90%的点不上问题,换“鼠标移动+点击元素”就能解决,而不是用强制点击
  • 调试技巧:运行前在影刀里右键点击指令,选“执行到此指令”,观察鼠标行为

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论