2008年10月23日星期四

SilkTest:使用杀进程的方式退出应用程序

最近项目中遇到一个很头疼的问题,总是无法正常关闭应用程序。应用程序为JAVA技术开发,使用SWT3.3,而测试工具使用SilkTest2006,不支持SWT3.3,无法使用Java插件,因此我们在项目中没有使用JAVA插件,这给项目带来了很大的麻烦,因为SilkTest把所有弹出窗口(对话框和tips)都识别为DialogBox。
我使用如下代码关闭Application:


[+] Close ()
[-] if Ajax.Exists (1)
[ ] // Ajax.SetActive ()
[ ] window wCloseWin
[ ] LIST OF WINDOW lsCloseWindows
[ ]
[-] do
[ ] more:
[-] do
[-] if !Ajax.Exists (1)
[ ] goto end
[ ] lsCloseWindows = Ajax.GetCloseWindows ()
[-] for each wCloseWin in lsCloseWindows
[ ] wCloseWin.SetActive ()
[-] if wCloseWin.Exists ()
[-] do
[ ] wCloseWin.Close ()
[-] except
[ ]
[-] if Ajax.Exists ()
[-] else
[ ] goto end
[ ]
[-] except
[ ] goto more
[ ]
[ ] Ajax.SetActive ()
[ ]
[ ] end:
[-] if Ajax.Exists (1)
[ ] Ajax.TypeKeys ("")
[+] if Ajax.DoYouWantToSaveCurrentProject.Exists (1)
[ ] Ajax.DoYouWantToSaveCurrentProject.No.Click ()
[ ] sleep (1)




每次运行脚本的时候,总会有挥之不去的Tips悬在那里,关闭的时候,Ajax.GetCloseWindows ()会获取到Tips然后试图wCloseWin.Close,但是SilkTest关闭窗口的方法全不奏效,因此经常会出现无法关闭应用程序而使得测试失败。
突然想到杀进程不失为一种很好的方法,这样无论应用程序处于什么状态都可以关闭它。这里面我的方法依然是使用运行Dos命令行的方式:

[ ] end:
[+] if Ajax.Exists (1)
[ ] SYS_Execute ("taskkill /f /im java.exe")



没有评论: