Squish中文网站 > 新手入门 > Squish Web怎么录制操作 Squish Web脚本回放为什么会失败
Squish Web怎么录制操作 Squish Web脚本回放为什么会失败
发布时间:2026/06/01 15:03:28

  在网页自动化测试刚开始搭建的时候,有一类问题是比较常见的,那就是Squish Web里面,操作要怎么去录制,还有录好的脚本,回放的时候又为什么会跑失败,录制的时候,看着一切都挺顺的,可一到回放,就卡在了按钮、弹窗、输入框,或者是页面跳转上,这背后的原因,多半倒不是工具它自己不能用,而是环境、对象怎么去识别、等待的条件,还有测试用的数据,这几样东西没有事先处理好。Squish for Web这个东西,它面向的是那些,要通过Web服务器去访问的、真实的Web应用,所以在做测试的时候,是需要让被测的那个页面,处在一个能被访问到、也能被反反复复重新启动起来的状态。

  一、Squish Web里面,操作要怎么去录

 

  在开始动手录制以前,要先把测试的套件、浏览器、被测的那个地址,还有一开始要用到的那些初始数据,都给准备好,可别在业务系统里头,状态还乱成一锅粥的时候,就直接跑过去录了,不然的话,录下来的脚本,会把那种只出现一次的弹窗、旧数据、临时的跳转,全都给一股脑儿地记进去。

 

  1、去创建一个专门给Web用的测试套件

 

  先把Squish的IDE给打开,然后进到文件菜单里头,去选那个新建测试套件的选项,在跟着跳出来的向导走的时候,去把要保存在哪个目录、准备用哪种脚本的语言,还有那个Web的工具包,都给一样一样地挑好,官方的教程里头,也是这么说的,在新建测试套件的时候,要在工具包那个页面里,去把Web给选上,然后,再接着去挑一种脚本的语言。

 

  2、再去把测试的用例给建好

 

  在测试套件视图的那个地方,去点一下新建脚本用例的按钮,然后给这个用例,起上一个名字,就比如,叫测试登录的,或者是测试创建订单的,用例一旦被建好了,它就会给你生出来一个跟它对着的脚本文件,到了后面,不管是录制、调试,还是回放,全都要围着这个测试用例来打转。

 

  3、点一下那个录制的按钮

 

  把要用的那个测试用例给选中了以后,去点一下录制的按钮,就可以开始录了,官方的教程里有讲过,去点一下测试用例的那个录制按钮,是会拿新录下来的东西,去把原来脚本里的代码,给整个换掉的;当然,你也可以只录上那么一小段,再把它给塞到已经有内容的用例里头去。在录的时候,就照着真实业务该有的那个顺序,一步一步地去操作,就比如,先去把页面给打开、把账号给敲进去、去点那个登录的按钮、进到目标页面的里头,最后,再把要验证的那个动作,给跑完它。

 

  4、等录完了以后,要先去把脚本给理一理

 

  录制一结束,可别就急火火地,赶着去跑什么批量回放,得先去翻一翻录好的脚本,去瞧一瞧里头,有没有那种多余的点击、翻来覆去的等待、没什么意义的鼠标跟着乱晃,还有那种临时弹窗的操作,像输入用户名、密码、订单号,这一类的数据,最好是到了后面,把它给换成变量,或者是专门放测试数据的文件,可别就这么让它们,长久地、写死在脚本里头。

 

  二、Squish Web的脚本,回放的时候为什么会失败

 

  脚本回放会失败,一个比较常见的原因,就是页面它当下的那个状态,跟当初录制的时候,已经长得不一样了,网页的自动化测试,它可不像是那种,靠着一张截图去回放的东西,它是很依赖对象的、要靠着页面一点一点地加载、靠着DOM那个结构,还有事件被触发的顺序,这些东西里头,只要有一样发生了变化,那脚本跑起来,就有可能会找不到它要找的那个对象。

 

  1、对象的名字,它不够稳当

 

  录下来的脚本里头,一般都是会给对象,自动生出来一个名字的,要是网页上那些个元素,它的id、class、上面写的文本,或者是它在DOM树里头的层级,老是变来变去的,那到了回放的时候,想要再找到这个对象,可就难了,Squish for Web有的时候,是会去用那种,描述HTML页面DOM路径的、一层套一层的名字,这页面它自己的结构要是一变,那种靠着路径找过来的对象名,就会变得特别脆,一下就能给折断。

  2、页面它还没加载完呢,脚本就接着往下跑了

 

  有好些个失败,它倒不是因为点错了地方,而是那个要等的对象,它都还没在页面上冒出来呢,脚本就自己急冲冲地,接着往下头去跑了,人手工去操作的时候,是会很自然地,就在那等上一等的,可脚本它不会自己这么干,所以,在那些顶顶要紧的动作前头,是要去用上像waitForObject这一类的等待办法的,官方的教程,也是把waitForObject,给当成了在自己手写脚本的时候,等着一个对象能被拿来用的,那种最常用的做法。

 

  3、录进去了一些不太稳当的步骤

 

  像验证码、头一回登录时候蹦出来的提示、浏览器自己弹出来的要帮你记密码的框、关于权限的提醒、广告的弹窗,还有会话超时了给你的提示,这些东西,它们可都不太适合,被就这么直愣愣地,给录进那个主流程里头去,它们出现一次,跟出现好多次的时候,那个状态,是各不一样的,脚本回放的时候,是很容易,就被这些东西,给死死地卡在那里的。

 

  4、拿来测试的那些数据,没有被弄回到最开始的样子

 

  就比如讲,你在录的时候,顺手建好了一个订单,可等到了回放的时候,那个一模一样的单号,它早就已经待在那里了;再比如,录的时候,那个列表还是空空的,什么也没有,可回放的时候,里头却塞满了以前留下的旧数据;又或者,录的时候,那个账号是还没登录的,可到了回放的时候,浏览器里头,还偷偷地留着上一次登录过的老会话,数据的状态它都不一样了,那页面给你看到的样子,自然也就跟着不一样了,脚本它会跑失败,这也就是情理之中的事了。

 

  三、Squish Web回放跑失败了,要怎么去排查

 

  到了要去排查的时候,可别就在那儿,翻来覆去地,把同一个流程,给录上一遍又一遍,要先去看一眼,它到底是在哪个地方给倒下的,然后再去判断,这到底是对象没认出来、是等着页面加载等太久了、是数据的状态不对,还是跑的环境本身,就出了什么问题。

 

  1、要从它失败的时候,吐出来的那份日志里头,去定好位

 

  先去把测试跑出来的那些结果给打开,去里头翻一翻,看看失败的是哪一步、那个报了错、说找不到的对象,它叫个什么名字、当时被截下来的那张图,还有那个一层一层往上调用的栈,要是报出来的错,是对象找不到,那就要头一个,先去看一看对象地图;可要是报出来的,是验证那一块儿没通过,那就得先去看一眼,页面上跑出来的数据,还有当初设好的那个断言的条件了。

 

  2、去拿那个专门拾取对象的工具,再重新去把它给认一遍

 

  跑到那个报了失败的页面上去,去用那个能拾取对象的工具,再把你要去够着的那个目标元素,给它重新地、仔仔细细地选上那么一遍,去把眼下这个对象,它身上带着的那些属性,跟脚本里头存着的那个对象的名字,给放到一块儿去,好好地比对比对,要是真有必要,就去把那个用来识别对象的条件,给改得更稳当一些,就比如讲,头一个去用那种,固定下来不会变的id、按钮上头写死的文字、稳稳当当的属性,可千万别去一个劲儿地,只靠着那种一层套着一层、长得没个尽头的层级路径。

 

  3、去把等待,还有判断,给它补到脚本里头去

 

  在页面要发生跳转、弹窗快要冒出来、表格里头的数据正准备刷新、还有按钮要变成能按下去的样子,这些个节骨眼的前头,去给它加上一段等待,可别去用那种,死死地睡上一觉的办法,来硬生生地拖时间,除非你只不过是临时想定个位,看看到底是哪里的毛病,一种更合适的法子是,去等着某一个对象,它变成了能被人看见的样子、等着某一段文字,终于出现在了页面上、又或者是等着某一个按钮,它变成了能被人给点下去的状态。

 

  4、去把跑测试的那套环境,给它弄回到最开始的样子

 

  在动手去回放以前,先去把浏览器里头,藏着的那些会话给清干净、去把测试账号的状态,给它恢复到原来的样子、再去把那些旧的、已经用过了的测试数据,给它一股脑儿地删掉,这些个事情做下来,为的就是要保证,每一次跑脚本的时候,那个入口,都是清清爽爽、一模一样的状态,碰上像登录、创建、删除、查询,这一类的流程,是要给那些用来准备数据,还有跑完了以后,去把数据给收拾干净的步骤,专门留出来一个,稳稳当当的位子的。

  总结

 

  Squish Web里头,操作要怎么去录,这里头的关键,就是先去把给Web用的测试套件,还有测试的用例,都给建好了,然后再去拿那个录制的按钮,照着一条稳稳当当的业务路径,去把它给录下来,等录完了以后,要马上动手,去把脚本给好好地理上一理,而Squish Web的脚本,回放的时候,又为什么会失败,比较常见的原因,就是对象它认得不够稳、页面还没加载好就急着往下跑了、弹窗被不小心给录了进去、还有测试的数据,没有被放回到最开始的样子,到了真要去动手处理的时候,是要照着从日志里头去定好位、把对象再重新给认准了、把等待给补上、再把跑测试的环境给弄回原样,这么样一个顺序,去一步一步地往下查的,这可比在那儿,翻来覆去地,把同一个流程给录上一遍又一遍,要靠得住多了。

135 2431 0251