Squish录制时看起来按了很多下、拖了很多次,脚本里却只留下几行,或者某个关键点击像是被吞掉了,这类现象通常不是录制坏了,而是录制器把低层事件合并成了高层动作,或在同步与上下文切换时没有把动作写进脚本。要减少缺失感,需要先分清是被压缩合并,还是确实没录进去,再按场景把录制参数调到更可控的口径。
一、squish录制步骤为什么缺失
1、事件压缩把一串动作合并成少量高层语句
Squish默认会做Event Compression,把常见的鼠标与键盘序列压缩成更高层的API调用,所以你在界面里看到很多细碎动作,脚本里可能只剩一次点击或一次输入,这是设计行为而不是异常。
2、Qt Widgets场景里勾选了Compress Events导致中间过程不记录
在Qt Widgets应用里,开启Compress Events会忽略部分鼠标移动与悬停等中间事件,录制脚本更短,但回看时会感觉步骤少了一截。
3、录制同步不足导致动作没有被稳定落到脚本
录制器需要让AUT与脚本同步,若界面加载慢、弹窗出现晚、控件还没就绪,录制时容易出现你完成了操作但录制器没把它稳妥写入的情况,后续回放就像缺了一步。
4、操作发生在录制上下文之外
切到系统文件对话框、点了外部浏览器窗口、或AUT被遮罩层抢了焦点时,录制器可能只记录到焦点变化而没有记录到你以为的那次点击,这类缺失通常出现在跨窗口与跨进程交互环节。
5、同类控件太多导致录制器选择了另一条等价路径
例如列表里多行相似项、工具条上一排同类按钮,录制器为了生成更稳定的脚本可能选用更抽象的动作表达,导致你以为的那次点击没有以原样出现,回看像是少了步骤。
二、squish录制配置应怎样调整
1、先确认录制目标AUT映射正确
在Squish IDE点击【Edit】→【Server Settings】→【Manage AUTs】,检查Mapped AUTs里是否映射到当前实际可执行文件路径,避免录制时挂到同名不同路径的程序上导致动作丢失或落错窗口。
2、需要保留中间鼠标过程时关闭Compress Events
在Squish IDE点击【Edit】→【Preferences】→【Squish】→【Recording】,找到【Compress Events】并取消勾选,再重新录一小段对比脚本变化,适合排查悬停触发、滑过菜单、拖拽前定位这类依赖中间过程的场景。
3、需要确认是否被压缩合并时临时关闭事件压缩录一次对照
若你是通过命令行录制或用squishrunner驱动录制,可在录制阶段加上【--disableEventCompression】做一次对照录制,用来判断“缺失”到底是压缩合并还是确实未记录,但不要把它长期当默认口径使用,否则脚本会变得冗长且更难维护。
4、把录制同步方式调成录制时按时间插入等待
在Squish IDE点击【Edit】→【Preferences】→【Squish】→【Recording】→【Script Synchronization】,选择【Based on Time During Recording】,让录制器在需要时插入snooze式等待,先把动作落脚本的问题稳定住,再回头用更精准的同步点替换。
5、对经常慢加载的页面用同步点而不是盲目加长超时
在关键控件出现之前创建同步点,录制器与回放会更一致,避免因为偶发慢加载导致录制阶段漏写或回放阶段抢跑。
三、squish录制内容应怎样复核
1、用一段最小复现录制快速判定缺失类型
新建或打开任意用例,只录制三步到五步的最小操作路径,分别在开启与关闭Compress Events的两种口径下各录一次,对比脚本行数与动作表达,先把问题归到压缩合并还是录制漏写。
2、在已有用例里用Record Snippet补录并对齐插入位置
打开目标用例,把光标放到疑似缺失动作应出现的位置,点击【Record Snippet】开始补录,完成操作后停止录制,确认新增语句是否插入在期望位置,再决定是否需要重录整段流程。
3、复核对象映射是否在录制阶段被正确加入对象库
若录制出的语句引用了临时对象或对象路径过长,优先在Application Objects里复制Symbolic Name并写入Object Map,减少后续界面微调造成的重录次数。
4、复核是否是同步问题伪装成缺失
当你发现录制脚本里确实有那一步,但回放时像是跳过或没执行,先按同步文档把等待与同步点口径做一致化,再判断是否需要调整对象识别条件。
总结
Squish录制步骤“缺失”最常见的根因是事件压缩合并与录制同步口径不一致。先核对AUT映射,再按需要切换【Compress Events】与【Script Synchronization】的配置做对照录制,用最小复现把问题归类清楚,之后再用【Record Snippet】补录与对象库规范化把录制结果稳定下来。