Squish中文网站 > 新手入门 > squish对象识别不到怎么办 squish对象映射怎么更新
squish对象识别不到怎么办 squish对象映射怎么更新
发布时间:2026/01/27 15:13:13

  脚本跑到点击或校验步骤突然提示对象找不到,常见原因无非三类:界面出现得更慢、页面状态和录制时不一致、控件属性或层级被改过。处理时别急着整段重录,先用Squish的报错对话框把差异看清,再决定是补等待还是更新对象映射,这样改动更小也更容易复现。

  一、Squish对象识别不到怎么办

 

  对象识别不到时,先把问题分成“没等到”和“对象变了”,两条线分别处理,效率会高很多。

 

  1、先复测

 

  在弹出的Object Not Found对话框先点【Retry】重试一次;如果重试后能找到,说明更像是加载慢或渲染慢,优先在脚本里补同步动作,例如在点击前加一次等待对象可见或可用,再回放确认稳定。

 

  2、重选对象

 

  如果【Retry】仍失败,点【Pick New Object】后切回AUT,用鼠标选中你当前页面上真正要操作的控件;选完回到对话框时,不要急着确认,先看Squish展示的新对象信息是否与原对象同类型、同父窗口、同层级。

 

  3、写回映射

 

  确认控件确实变更后,保持选中的是正确控件,再点【Retry】让Squish用新对象重新执行这一步;多数场景下Squish会把新真实名写回到当前符号名对应的对象映射条目里,你后续脚本无需改动。

 

  4、打开定位

 

  点【Debug】进入对象映射定位页面,找到当前符号名条目后,对照Real Name里哪些字段发生变化,常见是windowTitle、text、index、路径层级;这一步的目标是确认到底变的是属性还是结构,避免你替换了不该替换的字段。

 

  5、放宽条件

 

  如果你发现变动来自动态标题、动态文本或状态位,回到对象映射把这类字段改成【Wildcard】或直接删掉,只保留能稳定锚定控件的字段;改完后立刻回放一次用例,确认命中的是同一个控件而不是相似控件。

 

  二、Squish对象映射怎么更新

 

  对象映射更新的目标是只维护映射,不动脚本。做法建议按“定位条目、拿真实名、替换验证”的顺序走,每一步都能当场验收。

 

  1、打开映射

 

  在左侧【Test Suites】中打开【Object Map】;如果你是从脚本报错回到这里,直接在脚本里右键该符号名选择【Open Symbolic Name】跳转到对应条目,避免手工翻找选错。

 

  2、跑到页面

 

  点击【Launch AUT】启动被测应用,用你们的正常路径把页面切到控件真实出现的位置;控件只在某一步才出现时,建议先把断点打在报错前一行,再点【Run】让AUT停在控件刚出现的状态。

  3、抓真实名

 

  打开【Application Objects】面板点击【Pick】回到AUT,用鼠标点目标控件;回到对象树后右键该控件点【Copy Real Name】复制真实名,确保复制的是当前这个控件而不是父容器或同名控件。

 

  4、替换保存

 

  回到【Object Map】选中对应条目,点击【Replace Real Name】把刚复制的真实名替换进去,再点【Save】保存;如果你们有版本管理,建议同一时间把变更说明写清楚,例如替换了哪些属性字段。

 

  5、当场验收

 

  在对象映射条目上先点【Check Existence】确认Squish能找到,再点【Highlight Object】看高亮框是否落在正确控件上;两项都通过后再回放用例,避免“映射能找到但找错对象”的隐患。

 

  三、Squish对象命名更稳定怎么做

 

  对象识别稳定与否,决定你后续维护量。原则是少依赖易变字段,多用稳定属性组合,并且把排查动作固化成习惯。

 

  1、选稳属性

 

  在Real Name里尽量保留type,并组合两项以上稳定字段,例如可访问名称、对象标识、固定的className或automationId一类信息;能不用坐标与index就尽量不用,坐标与index在布局改动后最容易失效。

 

  2、通配标题

 

  窗口标题、文件名、语言文本经常变化,遇到这类字段要么改为【Wildcard】,要么直接移除;你可以先把标题字段放宽,再用更稳定的父层级与控件标识去锁定对象。

 

  3、过滤定位

 

  对象多时不要靠滚动找条目,在【Object Map】的过滤框输入关键字先缩小范围;定位到条目后再用【Show In Application Objects】把它映射到对象树中核对一次,确认指向无误后再动手替换。

 

  4、改动留痕

 

  每次修改对象映射后,把改动点记成一句话,例如删除了text字段、把windowTitle改为【Wildcard】、替换了父层级路径;团队协作时这类记录能让下一次排查少走弯路。

  总结

 

  对象识别不到时先用【Retry】判断是否是等待问题,再用【Pick New Object】确认控件是否变更;需要更新就到【Object Map】定位条目,用【Application Objects】的【Pick】与【Copy Real Name】拿到新真实名,再【Replace Real Name】替换并用【Check Existence】【Highlight Object】验收。把易变字段用【Wildcard】放宽、把稳定属性组合起来,脚本长期稳定性会明显提升。

135 2431 0251