验证码填入与候选条
默认使用手动候选条。收到验证码后,在监听期(默认 60 秒)内持续跟踪焦点输入框。 切换到另一个输入框时,候选条跟随并重新计算停留时间(默认 8 秒);在同一输入框中 移动光标只更新位置,不延长停留时间。停留超时只隐藏候选条,监听期内换到另一个 输入框仍可重新出现。所有显示都受原始监听总期限限制,不能通过切换无限续期。 焦点不可写或无法取得光标时隐藏;右上角 × 取消这条验证码的整个会话,不影响后来收到的新验证码。 手动填入后不再跟踪这条验证码,失败时可从通知复制或手动粘贴。
“验证码 → 验证码填入”使用“关闭 / 光标候选条 / 自动填入”三选一,默认选择光标候选条。 “关闭”只关闭输入框填入,识别和复制仍由各自设置控制;旧配置中的自动填入不会被意外开启。 仅候选条模式展示停留时长与间距;两种填入模式均可设置监听时长及高级“写入机制”(直接写入/模拟键盘)。 选择“关闭”时隐藏填入相关参数。识别总开关关闭时保留当前选择,并禁用控件。 修改验证码设置会取消当前会话,从下一条验证码开始使用新配置。
自动模式在监听期内遇到首个符合条件的当前焦点输入框时,最多尝试一次:
- 非密码、可读、可写,不在 SmsPop 自己的前台设置窗口中。
- 内容为空、只有空白,或者是该验证码的部分前缀;不向普通已有文本追加。
- 只根据焦点、控件能力与内容判断,不识别输入框是否专门用于验证码;普通空白输入框也可能符合条件。
- 写入前重新验证焦点与目标身份,重新读取内容应用自动写入策略;焦点切换、超时、关闭辅助或新验证码均会使旧请求失效。
- 不主动夺回焦点。模拟键盘逐字检查当前控件;失败后不尝试其他输入框,以免部分输入后重复填入。
自动模式不显示候选条,失败时可使用通知里的复制按钮或已自动复制的剪贴板。 验证码识别、过滤和去重规则继续生效。
无手机测试
- 运行
npm run tauri dev。准备两个可编辑的空白输入框,例如记事本的两个独立窗口。 - 选择“光标候选条”,在“连接”页或托盘菜单发送测试通知;它会在 4 秒后到达,验证码为
868740。 - 点击第一个输入框,确认候选条出现;切换到另一个输入框,确认跟随且重新停留 8 秒。
- 留在同一个输入框中移动光标,确认不会无限续时;候选条消失后切换到另一个输入框,确认在剩余 60 秒内仍能出现。
- 点击 ×,确认切换输入框不再提示;再次发送新测试通知,确认能重新出现。
- 选择“自动填入”并等待自动保存,再发送测试通知。4 秒内点击空白输入框,确认只填一次且不显示候选条;随后切换其他输入框,确认不重复填入。
- 再次发送测试通知前,在目标输入框输入
868,确认能补全;输入普通文字或完整868740,确认跳过。 - 测试密码框、只读框;确认自动模式跳过。两种写入机制均需实际验证,模拟键盘期间切换焦点应停止后续字符。
- 超过监听期限后再点输入框,确认不出现候选条或自动填入。测试结束后切回“光标候选条”或选择“关闭”。
每次场景使用新的测试通知。测试通知走真实通知分发和写入路径,会实际改变被选中的输入框,建议使用专门的空白测试窗口。
自动检查
powershell
npm test
npm run build
cargo test --workspace --locked
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings核心测试覆盖监听/停留时序和自动写入策略;状态测试覆盖单次认领、取消与超时。 这些测试不代替 Windows 不同应用、DPI 和 UIA 提供方的真实验证。