【发布时间】:2017-12-16 01:40:20
【问题描述】:
我有两个库函数:
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 属性与应用程序的属性相匹配。但是,尽管属性匹配,第二个将找不到文本字段:
错误:
我也尝试了其他属性,标记名,各种类属性,以及这三者的组合,但都没有找到。
有什么想法吗?
第一次更新
根据要求,完整的间谍屏幕截图:
录音工具生成的整行:
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"
请注意,编辑文本是为了从代码中删除识别元素。他们已经在我这边进行了三次检查并且是正确的。
这仍然不起作用。
但是,录制也是如此。什么给了?
【问题讨论】: