SilkTest Q&A 5

Q41.VerifyBitmap的问题。
我正在使用函数VerifyBitmap比较位置,边,颜色等,例如:
Window.VerifyBitmap(“Position.bmp”,[Rect])
Window.VerifyBitmap(“Border.bmp”,[Rect])
Window.VerifyBitmap(“Color.bmp”,[Rect])
在运行该脚本的时候,如果有任意一步失败,脚本就在出错的地方终止了,而不会继续向下运行。有什么办法可以使脚本即使有某步失败的情况下也一直运行完么?我希望在结果窗口看到所有的失败信息。

 
A41.
答案1:把所有的验证语句都放入do…except…中去,你可以在except部分保持空白,或者显示错误信息。
答案2:这需要了解下面三个函数是如何工作的。
VerifyBitmap()
VerifyProperties ()
Verify ()
你应该尽量将这种verify的语句放在后面执行,这样只有前面的都通过后,才会执行到它。就像下面这样:
do
//
//你的语句
//
VerifyBitmap()
except
// 当测试失败时需要执行的其他语句

或者干脆用SYS_ComareBitmap()来代替VerifyBitmap()

 
Q42:如何在脚本文件中定位结果文件中的错误?
A42:
1.确保你的结果窗口打开了结果文件。
2.定位结果文件中的错误信息。
3.选择错误信息。
4.点击Results/Goto Source菜单,源文件将被打开并且显示错误产生的位置。

 
Q43:如何从结果文件生成报告。
A43:
1.确保结果窗口打开了结果文件。
2.点击Results/Pass/Fail Report。出现Pass/Fail Report对话框
3.选择你想要生成报告的属性,例如:Component
4.点击Generate按钮
5.SilkTest在Pass/Fail Report对话框中生成报告
6.你可以打印或者导出报告。
7.点击关闭按钮关闭Pass/Fail Report对话框。

 

 
Q44: DBTester是什么?
A44:DBTester是一个允许你直接通过ODBC驱动访问数据库的测试工具。如果你的应用是数据库驱动的,你可以通过应用UI进行测试,然后通过DBTester来验证数据的变化。

 
Q45:DBTester提供了哪些函数?
A45:DBTest提供一下六个常用函数,你可以在testcase中直接使用它们:
1. DB_Connect::通过指定ODBC DSN名,打开一个数据库链接。DB_Connect返回一个连接句柄,该句柄可以被其他DB_Tester函数使用。SQL语句可以被提交给数据库。例如:
con = DB_Connect(“dsn=dsn_name”)
2. DB_Disconnect:关闭指定的数据库连接。所有有关连接的资源都会被释放。例如:
DB_Disconnect(con)
3. DB_ExecuteSql:将指定的SQL语句发送到指定的数据库连接,并且执行。DB_ExecuteSql返回一个查询结果句柄,该句柄可以被DB_FetchNext函数使用,例如:
res = DB_ExecuteSql(con, “SELECT * FROM …”)
4. DB_FetchNext:从指定的查询结果句柄返回下一行数据。例如:
DB_FetchNext(res, col1, col2, col3, …)
5. DB_FetchPrevious:从指定的查询结果句柄返回前一行数据。
6. DB_FinishSql:关闭指定的结果句柄。例如:DB_FinishSql(res)

 

 

Q46.当使用FileReadLine (hFile, sMailData)的时候,它并不从输入文件中读取每行内容。我该如何让程序将每行中的字符串都加在list中,并且将所有的行读入一个list of list结构中?
A46.请使用下面的代码:
[+] LIST OF LIST OF STRING ParseMailFile ()
[ ] STRING sElement, sLine, sMailData
[ ] HANDLE hFile
[ ] LIST OF STRING lsMailData = {}
[ ] LIST OF LIST OF STRING llsMailData = {}
[ ] rMail Mail
[ ]
[ ] hFile = FileOpen (csDataDir+”Mail.txt”, FM_READ)
[-] while (FileReadLine (hFile, sMailData))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 1))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 2))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 3))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 4))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 5))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 6))
[ ] ListAppend(lsMailData, GetField(sMailData, “,”, 7))
[ ]
[ ] ListAppend(llsMailData,lsMailData)
[ ]
[ ] FileClose (hFile)
[ ] return llsMailData
[ ]
只要强迫它在循环之前从第一行开始读取即可。

 
Q47.希望在建立web测试的frame work方面得到帮助。
1)我需要为每个页面都生成window declaration么?
2)我需要为window declaration使用multiple tag么?
3)我应该选择怎样的multitag?
1)声明每一个web页并不是必须的,但是在大多数情况下,你还是需要这样做的。其实,你不用为每一页的每个对象都声明。你可以使用继承,这样基类的对象声明可以被继承到子类中。
2)你可以使用multi tag来声明窗口。我说的multi是指你可以为窗口使用不同的caption。
3)以我的经验来说,multi tag可以使用window ID。让我来解释,如果你有同一个应用的两个实例在运行(显然,它们都会有相同的caption),会出现某些冲突。在这种情况下,silktest脚本会失败。为了避免这种情况发生,Window ID可以被使用,因为,即使同时运行两个实例,window ID仍然是唯一的。

 

 

Q48:如何在testplan里面建组和子组的描述?
A48:在一个testplan里面,每个文本行都是以0列开始,代表一个顶层的组描述。可以这样建立子组描述。
1.将光标移到顶层组描述的下一行。
2.点击Outline/Move Right
3.当前行会自动朝右缩进,成为子组描述。

 

 

Q49. silktest可以验证一个广告的位置么?
A49.你可以的,但是…
广告的位置可能在各个系统中都不相同,作为其中的一个解决方法,你可以使用GetRect()方法。或者你可以使用不同的属性(在录制testcase的时候按住ctrl-shift键)然后选择location作为其中的一个属性。

 

 

Q50.上传应用的图像,是MS项目应用。其中一部分,silktest识别为一个childwin。但是当使用ChildWin3.SetActive()的时候,silktest执行失败,报错说窗口无法激活。有什么解决办法么?
A50:尝试使用父窗口组合方式:Parent.ChildWin3.setActive()

Leave a comment

请输入正确的验证码