51Testing软件测试论坛

标题: 关于QTP描述性编程不能识别到JavaButton的问题 [打印本页]

作者: 风自飘然    时间: 2012-8-21 17:21
标题: 关于QTP描述性编程不能识别到JavaButton的问题
在使用QTP的过程中出现了不能描述性编程操作JavaButton的问题,具体情形如下:
1、QTP的Object Spy可识别JavaButton组件并可正确将其添加入对象库。
2、使用描述性编程可正确操作JavaMenu却不能操作JavaButton。相关代码如下:
    Public Function openEditPanel(windowTitle,openMode)
           If openMode="menu" Then
                 JavaWindow("title:="&windowTitle).JavaMenu("label:=操作").JavaMenu("label:=修改").Select
              elseif openMode="toolbar" Then
                 JavaWindow("title:="&windowTitle).JavaButton("label:=edit").Click
           End If
     End Function
3、报错如下。Cannot identify the object "[ JavaButton ]" (of class JavaButton). Verify that this object's properties match an object currently displayed in your application.

亲们有遇到过类似的情况或是知道如何解决此类问题么,诚心求教~
作者: xjwldlover    时间: 2012-8-21 18:00
1、QTP的Object Spy可识别JavaButton组件并可正确将其添加入对象库。

javaButton的对象库截图给发一下呗,属性和关联关系尽量显示全一些
作者: 风自飘然    时间: 2012-8-22 15:24
本帖最后由 风自飘然 于 2012-8-22 15:26 编辑

回复 2# xjwldlover

[attach]81027[/attach][attach]81028[/attach]
    图片如上所示:
添加对象后,运行如下语句可正常执行:
JavaWindow("自动化脚本运行工具").JavaButton("6").Click
但是用描述性语言就抛出上述错误:
JavaWindow("title:=自动化脚本运行工具").JavaButton("label:=6").Click

还有什么信息遗漏的我会随时补充,万分感谢~
作者: xjwldlover    时间: 2012-8-22 16:22
JavaWindow("自动化脚本运行工具").JavaButton("label:=6").Click 可以运行吗,如果可以的话可能就是JavaWindow对象的描述有问题。
如果也运行不了,那么多spy记下这个javaButton的对象,看JavaButton对象的label属性是否是可变的。
我感觉就这两个地方会处问题。
作者: 风自飘然    时间: 2012-8-22 16:52
回复 4# xjwldlover


JavaWindow("自动化脚本运行工具").JavaButton("label:=6").Click   这句应该没问题。

我另外试了下,应该是JToolBar的问题,把这个按钮从JToolBar中拿出来直接放到JPanel里就没事了,上面的语句可以正常运行,但是一旦放回JToolBar就又识别不了(仅仅是描述性编程识别不了,对象库没有问题)。会报错:Cannot identify the object "[ JavaButton ]" (of class JavaButton). Verify that this object's properties match an object currently displayed in your application.
如果有可能试着从这点入手吧。这方面的资料真的不多,大家一起探讨下吧~
另:我的界面没有用美化工具,全部都是Java Swing 做出来的。
作者: xjwldlover    时间: 2012-8-22 19:19
明白了,您看我这样解释对不对。如果对象库存在
browser().Page().Frame().Button(),你可以修改对象库,将button放到Page下,这时QTP识别页面对象不管该对象在对象库中的层级关系,QTP会遍历整个页面;但是如果使用描述性编程把Button放到Page下,这时QTP找Button对象就是根据你描述性的路径来找,找到Page下后不会再找Frame下的子节点,就找不到对象了。
作者: 风自飘然    时间: 2012-8-23 11:08
回复 6# xjwldlover

    您的意思是我在进行描述性编程时少添加了一层的层级关系是吧。那我可不可以这么设想:如果我们获取到了JToolBar对象,并在这个对象里去找JButton是不是就有可能找到呢?
    刚刚我试过了,我获取到了Toolbar对象,但是在这个对象中还是获取不到任何JButton,但是把JButton从JToolBar中取出来,无论放到几层的JPanel里都能实现。我猜测可能是Jbutton放到JToolBar里是会有些许属性的变化,而Object Spy做过这方面的处理,能正确识别,但是咱们自己的描述性编程却没有这方面的特殊处理,所以识别不到。
   这也只是我的猜测,不过具体是什么原因还不好确定,您看是不是还有别的什么可能呢?
作者: xjwldlover    时间: 2012-8-23 12:44
回复 7# 风自飘然

如果我们获取到了JToolBar对象,并在这个对象里去找JButton是不是就有可能找到呢,刚刚我试过了,我获取到了Toolbar对象.

以上这个Toolbar对象是通过描述性变成找到的吗,而且描述性中间没有JPanel层?如果是这样,那这东西就有些神奇了,哎,再等待高人吧
作者: 风自飘然    时间: 2012-8-24 09:19
回复 8# xjwldlover


    不是用描述性编程获取到的JToolBar,我是在JavaWindow下利用获取to_class为JavaToolbar的ChildObject的方式获取到的JToolBar,同样在获取到的JToolBar下利用to_class为JavaButton的ChildObject就获取不到了。至于JPanel,我在描述性编程中一直没用到诶~
作者: xjwldlover    时间: 2012-8-24 10:27
JToolBar下利用to_class为JavaButton的ChildObject就获取不到了...
如果获取不到,要么JavaButton的HTML标签不在JToolBar下面,要么你使用的属性错了。
有个工具叫debugBar,可以很清晰的看到页面元素的目录结构,QTP编程如果常用到DOM解析,你可以安装一个这工具,非常好,查看下JavaButton是否在JToolBar下面。

就是不知道能不能解析你使用的这种页面
作者: 风自飘然    时间: 2012-8-29 10:15
回复 10# xjwldlover


    严重怀疑JButton在放到JToolBar里以后属性发生了不可知变化,组件类型都不可知,不是JavaPanel不是JavaObject不是JavaCheckBox不是JavaButton不是JavaFrame,真的不知道怎么用描述识别确定这个东西了。。。
作者: 风自飘然    时间: 2012-9-4 13:55
各位同仁,有谁有在用Java设计的C/S界面中使用QTP描述性编程识别JToolBar中的JButton的经历啊?
作者: 陶然楠轩    时间: 2015-9-10 16:46
我也遇到这个问题,请问楼主解决了吗?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2