lujian2036 发表于 2011-6-17 12:01:39

[求助]object not visible

运行程序中遇到object not visible的问题

测试程序描述:   
测试的程序框架为一个主窗口,主窗口里可以打开各种不同类型的标签页窗口,类似wps、firefox那样,具有多tab,不同类型的标签页会有不同的工具栏,有的有一个工具栏,有的有多个

程序使用描述性编程
set objtbl = description.create()
objtbl("name").value="标签2"

if window(mainwindow).window(objtbl).exist(1) then
   window(mainwindow).window(objtbl).activate
else
'出错提示
end if

出错的位置在“window(mainwindow).window(objtbl).activate”,就是说已经判断过了窗口是存在的
出错复现步骤是一开始先激活另一个标签页,例如叫标签1,从界面标签1到界面标签2切换时,由于具有不同的工具栏,会导致整个标签页面自适应的调整高度
这里有一个奇怪的现象,虽然提示了 object not visible,但是这个“标签2”界面却仍然被激活了


个人判断出错原因:
由于不同类型标签页工具栏个数及类型不同,当从标签页1激活标签页2时,整个标签页的位置会自适应的移动,在标签页2从A位置移动到B位置的过程中,Qtp没能“看见”程序,就是QTP在点击了标签页2后,再去判断是否已经激活了此页面时,没有“看见”这个页面,问过开发人员,他们没有做过什么修改

请各位提供了可行的解决办法

如下是手动画了个界面展示图,(软件是公司的,直接截图可能会违法公司规定)

fanli82 发表于 2011-6-17 16:00:30

如果标签页2已经被激活,仅仅是想去掉弹出的“object not visable”对话框。
那很简单。使用qtp自带的场景错误恢复机制就可以。

17800455 发表于 2011-6-17 16:51:14

if window(mainwindow).window(objtbl).exist(1) then
   ‘因为窗口的属性为enable = false不可用。
   可以这样试一下。
   waitProperty("enable") = true
    window(mainwindow).window(objtbl).activate
   
else
'出错提示
end if

lujian2036 发表于 2011-6-22 09:45:51

回复 3# 17800455

试过你的方法,不能解决这个问题。因为是类似wintab的标签页,但是又不是标准的wintab,被处理过,所以直接使用spy是捕捉不到这些标签页,我是将主窗口加入仓库时看到这些标签是被识别成window的

lujian2036 发表于 2011-6-22 09:55:00

对于这个问题,我重点是想知道为何出现这个问题,是预防出现,查了国内外的一些类似问题,暂时没有找到为何出现这个问题,
这里在概要描述下问题出现的原因
窗口A在mousedown点击后位置会从(X,Y)移动到(M,N),窗口A开始时位置在(X,Y),当A.activate时,就提示“object not visible”,但是A此时也已经接受了activate动作,到了位置(M,N)

lyscser 发表于 2011-6-22 10:05:42

如果是远程桌面连接最小化了或者关闭了,怎么努力也是徒劳的
页: [1]
查看完整版本: [求助]object not visible