Squish中文网站 > 最新资讯 > Squish对象映射怎么维护 Squish对象映射更新后脚本失效怎么办
教程中心分类
Squish对象映射怎么维护 Squish对象映射更新后脚本失效怎么办
发布时间:2026/07/31 16:56:36

  Squish脚本能否稳定回放,很大程度上取决于对象映射。界面改版后,按钮文字、控件类型或父级窗口发生变化,旧映射便可能找不到对象。处理“Squish对象映射怎么维护Squish对象映射更新后脚本失效怎么办”,重点是更新对象的识别属性,尽量保留脚本正在引用的符号名称。

  一、Squish对象映射怎么维护

 

  对象映射把脚本中的符号名称,与控件真实属性对应起来。脚本重复使用同一个按钮时,只需维护一条映射,不必逐个修改测试步骤。Squish目前默认使用脚本式对象映射,内容通常保存在测试套件的shared/scripts/names文件中;旧套件也可能使用根目录下的objects.map。

 

  1、从对象映射窗口检查条目

 

  ①在【Test Suites】视图中打开目标测试套件。

 

  ②点击【Object Map】,展开符号名称层级。

 

  ③选择需要维护的对象。

 

  ④在右侧查看类型、文字、名称和父级对象等属性。

 

  ⑤启动AUT后点击【Check Existence】检查对象是否存在。

 

  ⑥需要确认位置时,点击【Highlight Object】。

 

  出现绿色标记,说明当前属性可以找到对象;显示红色叉号,则要继续检查属性变化。高亮出来的控件如果不是目标对象,说明映射条件过宽,已经匹配到了别的控件。

 

  2、优先修改真实属性

 

  界面上的“确定”改成“保存”,脚本引用的符号名称没必要跟着变。只要修正它对应的真实属性,原脚本通常还能继续使用。

 

  ①选中失效的符号名称。

 

  ②对照新版AUT找到目标控件。

 

  ③检查type、name、text、window等属性。

 

  ④删除已经失效的属性。

 

  ⑤补充新版控件中稳定且有区分度的属性。

 

  ⑥保存对象映射后重新回放。

 

  符号名称更像测试脚本使用的固定代号,真实名称才负责寻找控件。只修改真实属性,可以把改动控制在对象映射中,不用让大量脚本一起变。

 

  3、减少容易变化的识别条件

 

  录制时自动生成的对象名称,有时会带上动态文字、位置序号或层级较深的父对象。短期能用,界面稍微调整就容易失效。

 

  ①使用【Application Objects】选中目标控件。

 

  ②在【Properties】中查看全部可识别属性。

 

  ③优先保留固定ID、对象名称和控件类型。

 

  ④谨慎使用会随数据变化的文本属性。

 

  ⑤两个对象属性接近时,再加入父容器或窗口属性。

 

  ⑥确认组合条件只能匹配一个对象。

 

  属性不是越多越稳。把窗口标题、动态编号和多层父级全写进去,看着很严谨,实际任何一处变化都可能导致查找失败。通常保留两到三个稳定属性会更好。

 

  二、Squish对象映射更新后脚本失效怎么办

 

  更新映射后脚本突然报错,先看失败的是“名称引用”还是“对象查找”。前者多半改动了符号名称,后者则与真实属性、界面加载时间或对象层级有关。

 

  1、检查符号名称是否被改动

 

  ①打开报错脚本,找到waitForObject或相关操作使用的名称。

 

  ②在【Object Map】中搜索同名条目。

 

  ③确认条目没有被删除、改名或移动到另一份映射。

 

  ④恢复原符号名称,或同步修改脚本引用。

 

  ⑤重新运行单个测试用例。

 

  脚本式对象映射中的符号名称本质上是names文件里的变量。直接改变量名,而脚本仍引用旧名称,就会立即失效。维护时能不动符号名称,就尽量不动。

 

  2、使用对象未找到窗口重新匹配

 

  回放时waitForObject超时,Squish会打开【Object Not Found】窗口。这里可以直接选择新版控件,对比新旧属性。

 

  ①点击【Pick New Object】。

 

  ②在AUT中点选实际目标控件。

 

  ③比较旧映射与新对象的属性差异。

 

  ④保留稳定属性,删除失效条件。

 

  ⑤点击【Retry】重新查找。

 

  ⑥确认成功后保存映射。

 

  这种方式适合按钮换文字、控件换类型或层级调整后的修复。新对象会继续写回原符号名称,因此脚本不需要跟着大改。

 

  3、排查对象匹配过宽或过窄

 

  映射过窄时会报“对象找不到”;条件过宽时,脚本可能点到同类控件中的另一个,看起来更让人摸不着头脑。

 

  ①使用【Check Existence】确认能否找到对象。

 

  ②点击【Show in Application Objects】查看实际匹配结果。

 

  ③发现多个相似对象时,补充name、父容器或窗口属性。

 

  ④若属性值包含动态编号,改用通配符或正则匹配。

 

  ⑤再次执行存在性检查和高亮测试。

 

  使用通配符时,只放宽真正会变化的部分。比如标题末尾带订单号,可以忽略订单号;控件类型和所属窗口仍应保持明确。Squish的真实名称支持普通值、通配符和正则表达式。

  4、确认问题是否来自加载时机

 

  对象属性没有变化,但页面弹窗、列表或异步内容加载变慢,也会触发对象查找失败。

 

  ①确认AUT已经进入目标页面。

 

  ②检查对象是否需要滚动、切换页签或展开菜单后才出现。

 

  ③可见控件优先使用waitForObject等待。

 

  ④隐藏对象需要访问时,再考虑findObject。

 

  ⑤适当调整等待时间后重新运行。

 

  findObject找不到对象时会直接抛出查找错误;可见控件更适合通过waitForObject等待出现。别为了赶进度到处加固定休眠,页面快一点或慢一点,脚本又会不稳定。

 

  三、怎样让对象映射长期保持稳定

 

  对象映射修好一次不难,难的是后续版本更新时少返工。名称规划、文件备份和团队修改方式,都需要提前约定。

 

  1、按业务含义命名符号对象

 

  ①名称中写明页面、区域和控件用途。

 

  ②避免使用Button1、Object2等临时名称。

 

  ③同类对象采用统一命名顺序。

 

  ④公共窗口和导航控件单独整理。

 

  ⑤删除确认不再使用的重复条目。

 

  符号名称应描述“它在测试里做什么”,而不是照抄当前按钮文字。界面文案以后可能调整,业务含义往往更稳定。

 

  2、修改前备份并审查差异

 

  ①将对象映射文件纳入Git或其他版本管理。

 

  ②修改前提交当前可用版本。

 

  ③一次只处理一组失效对象。

 

  ④对比names文件或objects.map的修改内容。

 

  ⑤回放相关用例后再合并。

 

  【Object Map】视图中的修改不能直接撤销。删除或编辑前保存副本,确实能少掉不少意外返工。

 

  3、让开发端提供稳定对象属性

 

  ①整理经常失效的控件清单。

 

  ②请开发为关键控件设置固定对象名称或测试ID。

 

  ③避免用随机编号生成控件标识。

 

  ④弹窗和重复列表项保留稳定父级关系。

 

  ⑤版本发布前运行一轮对象识别检查。

 

  对于Qt应用,关键控件设置稳定的objectName后,Squish更容易生成可靠对象名称。自动化测试和开发在这里配合一下,后续脚本维护会轻松很多。

  总结

 

  “Squish对象映射怎么维护Squish对象映射更新后脚本失效怎么办”的核心,是让脚本引用保持稳定,同时及时修正控件的真实识别属性。对象名称清楚、匹配范围合适,界面升级后就不用成片修改脚本。希望本文能为大家维护Squish自动化用例带来一些参考,如需进一步了解相关内容,欢迎联系咨询。

135 2431 0251