2008年9月25日星期四

SilkTest:Control is not responding

问题描述:
执行SilkTest测试时出现错误:“Error: Control is not responding”
根据SilkTest帮助提供的信息,这个错误通常是SilkTest尝试从LIstBox,TreeView,ListView等选择一项时Selected()语句发生的。
It usually occurs in a Select( ) statement when SilkTest is trying to select an item from a ListBox, TreeView, ListView, etc.
错误可能发生在选择操作完成之后,也可能在完成之前。产生这个错误意味着对象没有对SilkTest发出的消息作出预期的响应。
The error can occur after the actual selection has occurred, or it can occur without the selection being completed. In general the error means that the object is not responding to the messages SilkTest is sending in the manner in which it expects

解决方案一(SilkTest提供):
尝试如下操作:
1)如果代码行在Recording代码块中,删除Recording关键字
If the line of code is inside a Recording block, remove the Recording keyword.
2)在错误发生的语句前使用如下语句:Agent.SetOption(OPT_VERIFY_RESPONDING, FALSE)
Set the following option just before the line causing the error: Agent.SetOption(OPT_VERIFY_RESPONDING, FALSE)
3)如果选择操作成功但依然出错,尝试使用Do . . . except语句
If the selection is successful, but you still get the error, try using the Do . . . except feature.

解决方案二:
SilkTest的解决方案在我的机器中不起作用,尽管使用Do . . . except语句可以避免异常错误的出现,但是SilkTest并没有执行选择操作,可以肯定错误发生在选择操作完成前。
可以使用以下的方式来完成操作,这个方式就是不直接使用内建的Selected(),而是通过键盘操作来模拟选择操作,代码如下:

window myObject = MainWindow.DialogBoxObject.ListViewObject
Select
(AnyType aItem)
integer i
if "aItem"=='{Val("{aItem}")}' //aItem is a
integer
i = aItem
else
i = myObject.FindItem ("{aItem}")
myObject.TypeKeys ("")
Agent.SetOption(OPT_KEBOARD_DELAY,0.2)
myObject.TypeKeys (",{i-1}")

myObject.TypeKeys ("")

1 条评论:

Hailong 说...

自从我将SilkTest的版本从SilkTest2006R2SP1升级到SilkTest2006R2SP2,这个问题不再出现了。