我希望我的代码尽可能动态,这是我的代码

Set buttonDesc = Description.Create()
buttonDesc("Class Name").Value = "JavaButton"

Set reqButton = JavaWindow("AKAM Application").ChildObjects(buttonDesc)
text = reqButton(1).GetROProperty("label")
JavaWindow("AKAM Application").JavaButton(text).Click


在这里,在第1行和第2行中,我声明了一个属性,以便可以使用其索引(1)单击按钮而无需指定其标题,我想对Windows对象执行相同的操作,在此我必须指定标题窗口“ AKAM应用程序”。问题是我需要JavaWindow的父类某种方式,以便我可以将其作为子代,并将Class Name指定为javaWindow并获取所需的对象,但是QTP不能将其作为父类,或者根本没有它,以后是可能的情况。有什么办法可以获取所有打开的窗口的对象并指定javaWindow并获取所需的窗口?我试过下面的代码,但是它不起作用,可能是因为我的应用程序窗口的标题栏中没有显示“ JavaWindow”,我不确定

    Dim WinDesc
    Set WinDesc = Description.Create
    WinDesc("nativeclass").Value = "JavaWindow"
    Set WinChildren =Desktop.ChildObjects(WinDesc)
    msgbox WinChildren.count
    For i = 0 to WinChildren.Count - 1
       winText = WinChildren(i).GetROProperty("label")
       msgbox winText
    Next


请帮助!

最佳答案

通过描述性编程,您可以将JavaWindow捕获到其index属性:

Set myJavaWindow = JavaWindow("index:=0")


0可以参数化。



注释后编辑:要使第二个示例生效:

Dim myJW, i
For i = 0 to 1023
    Set myJW = JavaWindow("index:=" & i)
    If not myJW.Exist Then Exit For

    msgbox "Text for JavaWindow " & i & ": " & myJW.GetRoProperty("label")
Next


要在具有特定标签的JavaWindow上进行匹配,您还可以使用描述性编程,例如:

myLabel = "Xyzzy!"
If JavaWindow("label:=" & myLabel, "index:=0").exist Then
    msgbox "Woei! A Javawindow with label '" & myLabel & "' exists!"
End if

07-27 18:12