在影刀里往输入框填内容,有两个长得像的指令:“输入文本”和“模拟输入”。新手经常用错——明明填进去了,提交时却是空的;或者中文变成了乱码。
一句话区分: 输入文本是“后台粘贴”,快但不触发实时校验;模拟输入是“真人在打字”,慢但能触发搜索联想、表单实时验证。
指令1:输入文本(默认推荐)
工作原理:直接把文本复制粘贴到输入框,绕过键盘事件。本质是修改输入框的value属性。
适用场景:
- 普通表单填单(地址、电话、备注)
- 登录框输账号密码
- 任何不需要实时触发前端事件的输入框
操作方法:
- 捕获输入框元素
2. 右侧指令面板拖入“输入文本”
- 在“文本”参数里填内容(支持变量)
- 可选“清空原有内容”(默认勾选)
配置示例:
输入文本:
- 元素:捕获的“用户名”输入框
- 文本:${用户名变量}
- 清空原有内容:✅ 勾选

- 输入模式:输入文本(默认)
⚠️ 踩坑:用“输入文本”后,有些网页的“提交”按钮还是灰色的,因为你虽然填了内容,但网页没有检测到“输入事件”。这时候就要换“模拟输入”。
指令2:模拟输入(真人打字模式)
工作原理:逐个字符触发键盘事件(keydown、keypress、keyup),每个字符间隔几毫秒。
适用场景:
- 搜索框需要触发下拉联想(如淘宝、小红书搜索)
- 表单有实时验证(如“用户名已被占用”提示)
- 输入后按钮状态从灰色变可用
- 密码框有虚拟键盘/安全控件
操作方法:
- 同样捕获输入框元素
- 拖入“输入文本”指令,输入模式下拉选择“模拟输入”
- 可设置“按键间隔”(默认50毫秒,可调快或慢)
配置示例:
输入文本:
- 元素:捕获的“搜索框”
- 文本:${关键词}
- 清空原有内容:✅
- 输入模式:模拟输入
- 按键间隔:30毫秒(数字越小越快)
⚠️ 踩坑:模拟输入速度慢。输入100个字符大约耗时100×间隔。如果间隔50毫秒,100个字要5秒。能不用就不用。
对比速查表
| 对比项 | 输入文本 | 模拟输入 |
|---|---|---|
| 触发键盘事件 | ❌ 不触发 | ✅ 完整触发 |
| 触发input/change事件 | ❌ 大多数不触发 | ✅ 触发 |
| 速度 | 极快(瞬间完成) | 慢(逐字符) |
| 中文支持 | 完美 | 个别网站乱码 |
| 网页能检测到是RPA | 可能检测(因为无事件) | 更像真人 |
| 推荐使用率 | 80%场景 | 20%场景 |
实战场景1:小红书搜索框(必须用模拟输入)
小红书的搜索框,输入文字后需要弹出联想词。用“输入文本”填进去,联想词不出现。
正确做法:
1. 点击元素(搜索框)
2. 固定等待(0.3秒)
3. 模拟输入(关键词, 间隔=50毫秒)
4. 固定等待(0.5秒) # 等联想词出现
5. 点击元素(第一个联想词)
为什么必须模拟输入:小红书前端监听了input事件,只有键盘输入才会触发。“输入文本”直接改value,不触发事件。
实战场景2:登录表单(用输入文本即可)
普通网站的登录框,只需要账号密码正确,不需要触发任何实时校验。用“输入文本”更快更稳。
错误做法:用模拟输入,每个字符慢慢敲,浪费时间。
正确做法:
输入文本(账号)
输入文本(密码)
点击登录
除非网站有“密码强度实时检测”或“账号格式实时校验”,否则不需要模拟输入。
实战场景3:淘宝搜索联想的组合技巧
淘宝搜索框既需要触发联想,又希望速度快。可以混合使用:
# 方案:输入文本 + 手动触发事件(不推荐新手)
# 更简单的办法:模拟输入只输第一个字,触发联想后点推荐词
模拟输入(第一个字, 间隔=0)
固定等待(0.3秒)
# 联想词出现后,直接点推荐词,不用输完整
点击元素(第一个推荐词)
这样只模拟输入一个字符,速度快多了。
常见问题速查
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 输入文本填了但提交时报空 | 网页只认input事件 | 换成模拟输入 |
| 模拟输入中文变乱码 | 某些输入法兼容问题 | 先切换到英文输入法;或用输入文本 |
| 模拟输入太慢 | 按键间隔太大 | 把间隔调到10~30毫秒 |
| 输入框有默认文字没清干净 | 没勾选“清空原有内容” | 勾选;或先手动Ctrl+A删除 |
| 输入后按钮仍灰色 | 可能需要点击输入框外部触发校验 | 输入后执行点击页面空白处或按Tab键 |
| 密码框模拟输入失败 | 部分网站屏蔽JS模拟键盘 | 换成输入文本(密码框通常不需要触发事件) |
我的经验:优先用输入文本,不行再换
测试流程:
- 先用“输入文本”,点击提交或搜索
- 如果页面有反应(成功跳转或列表更新),说明够了
- 如果没反应或提示为空,换成“模拟输入”
不用一上来就模拟输入。我见过有人整个流程全是模拟输入,一个搜索跑10秒,优化后变成0.5秒。
进阶技巧:触发input事件的Python方法
如果输入文本后需要手动触发input事件,可以用“执行Python代码”指令:
# 输入:元素对象(影刀传入的element)
# 输出:无
# 执行JS触发input事件
element = input_element # 影刀传入的元素变量
driver = element._parent
driver.execute_script("""
var el = arguments[0];
el.value = arguments[1];
el.dispatchEvent(new Event('input', { bubbles: true }));
""", element, "你要填的内容")
这个方案兼顾速度和事件触发,但需要一点Python基础。不熟悉的直接用模拟输入更省事。
影刀版本说明
- 社区版和创业版的“模拟输入”功能一致
- 按键间隔最小可设0毫秒(实际仍有微小延迟),不建议设0,容易卡死
- 新版影刀3.0+支持“模拟输入前自动清空”,不用单独加清空指令
官方推荐:查看影刀指令手册中“输入文本”词条,有动图演示两种模式的区别,非常直观。
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
