JavaEdit搜索函数未找到可见元素

时间:2017-07-11 20:28:30

标签: vbscript qtp hp-uft

我有两个库函数:

Function searchWindow(title)

     Set searchWindow = Window("title:=" + title)

End Function

Function searchField(label)

     Set searchField =  JavaEdit("attached text:=" + label)

End Function

我在这里测试它们:

Environment.Loadfromfile("C:\UFTConstants\constants.ini")

Set loginFrame = searchWindow(Environment.Value("frameLogin"))

loginFrame.Click

Set userField = searchField("User ID / Ci-Usager")

userField.Set "test"

第一个函数工作正常,它的title属性与应用程序的属性相匹配。但是,尽管属性匹配,第二个将找不到文本字段:

enter image description here

错误:

enter image description here

我也尝试过其他属性,标记名,各种类属性,以及这三种属性的组合,并且没有一个产生查找。

有什么想法吗?

首次更新

根据要求,完整的间谍screencap:

enter image description here

录制工具生成的整行:

JavaWindow("Application Name").JavaDialog("Window Title").JavaEdit("User ID / Ci-Usager").Set "user"

但是,当我尝试以编程方式重新创建时,我得到了相同的错误,仅针对JavaWindow:

“无法识别(JavaWindow类)的对象[JavaWindow] ......”

可能的Java设置问题?但这并不能解释为什么录制仍然可以找到Java对象。

第二次更新

以下是识别属性:

enter image description here

我已确保所有属性都已设置,但仍无法找到。

最终更新

好的,我已将代码缩减为绝对准系统。没有外部常量文件,没有外部库调用。我已经复制了录制模式中录制的全部内容。我打印了每个变量以确保准确性。我已经包含了完整的对象层次结构:

Set objWin = JavaWindow("label:=<redacted>")

objWin.SetTOProperty "to_class", "JavaWindow"

objWin.SetTOProperty "toolkit class", "javax.swing.JFrame"

MsgBox objWin.GetTOProperty("label")
MsgBox objWin.GetTOProperty("to_class")
MsgBox objWin.GetTOProperty("toolkit class")

Set objDialog = objWin.JavaDialog("label:=<redacted>")

objDialog.SetTOProperty "to_class", "JavaDialog"

objDialog.SetTOProperty "toolkit class", "<redacted>.LoginDialog"

MsgBox objDialog.GetTOProperty("label")
MsgBox objDialog.GetTOProperty("to_class")
MsgBox objDialog.GetTOProperty("toolkit class")

Set objEdit = objDialog.JavaEdit("attached text:=User ID / Ci-Usager")

objEdit.SetTOProperty "to_class", "JavaEdit"

objEdit.SetTOProperty "toolkit class", "javax.swing.JTextField"

MsgBox objEdit.GetTOProperty("attached text")
MsgBox objEdit.GetTOProperty("to_class")
MsgBox objEdit.GetTOProperty("toolkit class")

objEdit.Set "test"

请注意,编辑的文本是从代码中删除标识元素。他们在我身边进行了三次检查并且是正确的。

这仍然不起作用。

然而,录制相同的。是什么给了什么?

1 个答案:

答案 0 :(得分:1)

我认为在使用Javaedit字段时必须提到完整的层次结构。尝试将函数Parent的代码重写为:

calculateCost