我有两个库函数:
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属性与应用程序的属性相匹配。但是,尽管属性匹配,第二个将找不到文本字段:
错误:
我也尝试过其他属性,标记名,各种类属性,以及这三种属性的组合,并且没有一个产生查找。
有什么想法吗?
根据要求,完整的间谍screencap:
录制工具生成的整行:
JavaWindow("Application Name").JavaDialog("Window Title").JavaEdit("User ID / Ci-Usager").Set "user"
但是,当我尝试以编程方式重新创建时,我得到了相同的错误,仅针对JavaWindow:
“无法识别(JavaWindow类)的对象[JavaWindow] ......”
可能的Java设置问题?但这并不能解释为什么录制仍然可以找到Java对象。
以下是识别属性:
我已确保所有属性都已设置,但仍无法找到。
好的,我已将代码缩减为绝对准系统。没有外部常量文件,没有外部库调用。我已经复制了录制模式中录制的全部内容。我打印了每个变量以确保准确性。我已经包含了完整的对象层次结构:
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"
请注意,编辑的文本是从代码中删除标识元素。他们在我身边进行了三次检查并且是正确的。
这仍然不起作用。
然而,录制相同的。是什么给了什么?
答案 0 :(得分:1)
我认为在使用Javaedit字段时必须提到完整的层次结构。尝试将函数Parent
的代码重写为:
calculateCost