Squish中文网站 > 热门推荐 > Squish对象名称怎么维护 Squish对象名称变化后怎么批量更新
Squish对象名称怎么维护 Squish对象名称变化后怎么批量更新
发布时间:2026/06/01 14:57:47

  在界面自动化测试脚本中,最大的麻烦不是脚本数量多,而是一旦按钮、窗口或表格列的名字改变,整套用例就会大量报错。Squish对象名称该如何维护,当对象名称改变后又如何批量更新,关键做法就是把识别对象的信息统一放在Object Map里,不要在脚本各处直接写死真实的对象名称。根据Squish的官方文档,Object Map的作用就是集中管理对象名称,这样一来,即使应用的界面层次或者对象属性变了,也只需改动映射项,脚本里所引用的符号名称就能尽可能地保持稳定。

  一、Squish对象名称怎么维护

 

  维护Squish的对象名称,核心在于把Symbolic Name和Real Name区分开,其中Symbolic Name是脚本里面用到的稳定名称,Real Name则是一组属性,用来在界面上定位对象,比如type、text、name、visible、window等;平常工作中,测试人员应主要维护Real Name,不要轻易去修改脚本中的Symbolic Name。

 

  1、统一使用Object Map

 

  在录制或者手写脚本的过程中,应当让所有的对象引用都加入到Object Map里来,测试套件打开之后,能在【Test Suites】视图里找到并打开【Object Map】,去查看那些映射项;按照官方文档的说明,在Object Map视图里面,可以对对象映射进行重命名、添加、编辑和删除操作。

 

  2、给符号名称定规则

 

  在为符号名称确定规则的时候,命名的方式最好是按照窗口、模块还有控件的用途来组合,例如login_userName_Edit,还有main_save_Button,像button1、text2这种临时的名字就不要用了,同时也不要把可能发生变化的业务文本直接当成符号名称写进去,只有符号名称保持稳定,到了后期进行批量维护的时候,才能更省事。

 

  3、优先选稳定属性

 

  在选择Real Name的时候,要优先挑选那些稳定的属性,比如objectName、automationId、name、type等等,尽量少去依赖坐标、顺序或者临时的文本;如果遇到窗口的标题会变化的情况,可以把固定不变的那部分保留下来,或者改用更加稳定的父级对象和控件类型的组合。

 

  4、定期检查对象有效性

 

  在应用的版本有过更新之后,需要定期去检查对象的有效性,打开AUT,先进入这个对象所在的页面,之后在Object Map里面选中和它相关的符号名称,再通过右键菜单里的【Check Object Existence】功能,来检查还能不能找到这个对象;官方文档里面也提到过,在使用Spy去识别应用的时候,能够对一个或者多个符号名称做存在性的检查。

 

  二、Squish对象名称变化后怎么批量更新

 

  当对象名称有了变化,头一步不要急着去全局替换脚本里面的内容,正确的做法,是先要判断这个变化究竟是发生在Real Name上,还是发生在Symbolic Name上;在大多数界面改版的情况下,其实只需要改动Object Map里面对应的Real Name,脚本本身是用不着去动的。

 

  1、先用Spy重新抓对象

 

  我们需要先用Spy工具重新去抓取对象,把【Spy】打开,将变化之后的控件重新拾取一次,然后把新得到的对象添加到Object Map里面去;做完这些之后,再把原来的符号名称和新拿到的符号名称的Real Name拿出来对比,确认清楚,到底是text属性变了,还是type变了,或者window的层次结构不一样了,又或者是父级对象的属性发生了变化。

  2、更新旧映射项

 

  接着是更新旧的映射项,先找到那些脚本里面正在用着的Symbolic Name,然后把与它对应的Real Name修改成新对象的属性组合;经这样处理之后,原先的脚本照旧引用那个老的符号名称,但是当它实际运行的时候,就会自动定位到新的界面对象上去。按照官方的说明,当对象的属性发生改变以后,可以修改原符号名称所对应的那些属性,这样脚本就依然能够通过这个符号名称找到正确的对象。

 

  3、脚本化对象映射可用重构

 

  对于脚本化对象映射,还可以使用重构功能,比较新的Squish版本里面,默认采用Script-based Object Map,这些映射一般会存放在测试套件下shared/scripts目录里的names.ext文件当中;而Text-based Object Map则会放在这个套件根目录下的objects.map文件里面。假如确实需要去改Symbolic Name,那么在脚本化对象映射的方式下,在Object Map视图里把名称保存、重命名以后,就可以对整个测试套件里面的用例执行重构更新。

 

  4、批量替换前先备份

 

  在动手做批量替换之前,一定要先备份,要是项目里面还在使用objects.map文件,或者需要在编辑器中批量去处理names.ext文件,那么在整个测试套件上动手前,得先做一次完整的备份;官方文档特别提醒过,在Object Map视图里面做的那些修改,是不能直接撤销的,所以在编辑或者删除这些映射之前,对对象映射文件做备份是很必要的。

 

  三、Squish对象名称维护后怎么验证

 

  在把Squish的对象名称批量更新完之后,不能光看脚本里面还有没有红色的错误提示,这个对象到底还能不能被找到,找到的那个东西是不是真正正确的控件,还有多个长得像的控件之间会不会发生误匹配,这些全都需要再次去确认。

 

  1、先跑关键路径

 

  第一步是先跑一下关键路径,把登录、主流程、保存、查询,还有退出这些使用频率很高的用例,挑出来先去执行一次;要是这些路径都能顺利通过,那就说明窗口、菜单、按钮,还有输入框之类的基础对象映射,整体上是可以使用的。

 

  2、检查相似控件误匹配

 

  接下来要检查那些样子长得像的控件,看它们有没有被弄混,比如表格里面的按钮,列表里的项目,还有弹窗上的按钮,这些经常看着都差不多;更新完Real Name以后,需要用【Highlight Object】功能或者Spy工具,去看高亮出来的那个对象是不是正确的,免得脚本运行时点到了名字一样但实际不对的按钮,或者点到了旁边的其他控件。

 

  3、清理废弃映射

 

  对于已经没用的映射,也要记得去清理,以前版本留下的那些符号名称,不要一直放在那里;可以按照模块来检查Object Map,把那些的确不再使用的对象给标记上,或者直接删掉,但是在删除之前,得先去脚本里面搜索一下,确认还有没有地方在引用它。

 

  4、形成变更记录

 

  最后,最好形成一个变更记录,每次界面的版本有了改动之后,把哪些窗口、控件,还有属性发生过变化,以及哪些Object Map项目被调整过,这些信息都记录下来;以后要是再碰到找不到对象的情况,就能很快判断出来,到底是因为应用本身又改了,还是在维护映射的时候有遗漏。

  总结

 

  总结起来,对于Squish对象名称怎么维护,以及变化后又怎么批量更新的问题,关键点就是让脚本去引用那些稳定的Symbolic Name,并且把所有真实识别用的属性集中到Object Map里面去维护;当对象发生变化的时候,先用Spy抓取新的对象,接下来更新旧映射项里面的Real Name;只有在符号名称本身已经不合理的时候,才需要去做重命名和批量的替换。在全部更新完成之后,再通过存在性检查、高亮对象的确认,还有关键路径的回放这些手段来验证结果,这样一来,脚本的维护成本就会下降不少。

135 2431 0251