|
今天用silkTest来测试一个新的java application,却发现我的silkTest总不能正确识别Java objects?
可是昨天在测试其他程序时候明明还可以的。
折腾了半天,终于找到问题所在,和大家分享:
我的操作步骤如下,这里的测试对象是java web start里面的画图程序,可以从这里访问:
http://java.sun.com/products/javawebstart/demos.html
1。建立测试环境:
a, silktest里面新建立一个project
b, 启动java画图程序,然后从tools->enable extension 选择需要测试的对象,就是java的画图程序了
c, 按照指示操作,配置silktest支持java application(这里最后出现了错误信息:
test failed, could not find either JavaMain or JavaDialogbox
in your java application,没有关系,只要下面能识别就可以了,这个地方经常出现错误的)
2。录制测试脚本:
a, 录制测试对象声明(window declarations)
[-] window CustomWin Draw
[+] multitag "[JavaMainWin]Draw"
[+] CustomWin File
[-] multitag "[JavaJFCMenu]File"
[ ] "$File"
b, 录制test case
[+] testcase myTest()
[-]Draw.setActive()
这里问题就出现了,java application最上层怎么是CustmWin class? 这里应该是JavaMainWin class的
3。运行测试脚本
运行失败:Draw 不支持setActive()方法。
setActive是JavaMainWin的一个方法,CustmWin 的确是不支持的
4。分析?
错误原因:java objects没有能被正确的识别出来,怎么解决?
解决:
因为silktest里面的测试环境是针对每个project不同的,对应的环境配置参数保存在options set文件中。
而昨天的project还可以正确运行java程序,所以尝试把以前的环境配置拿到这里用
(通过Options->Open options set),重新做上面的步骤,这次步骤2的内容如下:
步骤2:
录制测试脚本:
a, 录制测试对象声明(window declarations)
[-] window JavaMainWin Draw
[ ] tag "Draw"
[+] JavaJFCMenu File
[-] multitag "File"
[ ] "$javax.swing.JMenu[1]"
b, 录制test case
[+] testcase myTest()
[-]Draw.setActive()
这里最上层的对象已经识别成功了,是JavaMainWin,执行步骤3,通过
这样就更确认了是环境配置的问题,仔细查看以前的环境配置说明文件,
发现要求把silktest/extend目录下面的javaex.inc文件内容全部注释掉?
当时是为了方便java识别,把这个文件重写放置在其他目录了,打开这个文件,发现JavaMainwin class的确是在这里定义的
[+] winclass JavaMainWin : MainWin
恢复该文件,重新操作,java 对象果然能正确识别了
原因分析:看来silktest默认是是使用JavaEx.inc来识别java对象的,由于新的project环境中,没有找到该类似文件, java objects 就被识别成一般的
winclass了;
[ Last edited by asks_zhuang on 2005-3-4 at 10:12 ] |
|