TestComplete中执行脚本时控件值未同步刷新问题

今天写了一个程序安装的自动化脚本,调试的时候发现有些控件的值获取后一直未自动刷新,鉴于该问题,仔细分析和请教后,发现TestComplete不会自动刷新控件中变化的值,这需要我们自己去控制刷新。

1,定义一个延迟函数(参数:延迟秒数,执行延迟的条件)

功能报警(DelaySeconds、条件)
,,,昏暗的间隔,开始时间
,,,开始时间=时间
,,,虽然CBool(条件)
,,,,,,,睡眠(DelaySeconds * 1000)
,,,,,,,第二(时间间隔=-开始时间)
,,,,,,,如果间隔=40然后
,,,,,,,,,,,日志。错误(“超时”)。
,,,,,,,,,,,退出做
,,,,,,,If 结束,,,
,,,循环
结束函数

,

2, Namemapping 一个显示进度的控件(控件的值:0% - -100%):

设置InstallProgress=Aliases.SQLNav.frmSQLNavWizard.panelMain.panelFrameHolder.SelectProduct.pnlNewProducts.pnlRightInstallProgress.labelInstallProgress

,

3,在脚本中调用函数:

电话报警(2、InstallProgress.Caption<在“100%”)

发现会一直延迟,直到超过指定间隔,原因就是最上面分析的,控件InstallProgress.Caption的值没有动态刷新,获取的是调用时的值,后面一直未改变。

,

4,修改脚本:

对于具有动态值的控件,使用上面的延迟函数显然不合适,对于具有动态值的控件下的延迟处理,可单独写一段脚本处理,使用TestComplete自带的方法RefreshMappingInfo()只刷新该控件,:

,,,昏暗的beginTime
,,,beginTime=时间
,,,做而InstallProgress.Caption<比;“100%”
,,,,,,,睡眠(2000)
,,,,,,,InstallProgress.RefreshMappingInfo 
,,,,,,,如果第二次(时间- beginTime)=40
,,,,,,,,,,,日志。错误(“超时”)。
,,,,,,,,,,,退出做
,,,,,,,If 结束,,,
,,,循环

或者是在函数中加入sys.refresh()刷新整个程序,不过不建议使用这种,整个刷新很耗性能的。

TestComplete中执行脚本时控件值未同步刷新问题