【问题标题】:JavaEdit search function not locating visible elementJavaEdit搜索功能未找到可见元素
【发布时间】: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"

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

这仍然不起作用。

但是,录制也是如此。什么给了?

【问题讨论】:

    标签: vbscript qtp hp-uft


    【解决方案1】:

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

    Function searchField(label)
         Dim objFrame
         Set objFrame = searchWindow(Environment.Value("frameLogin"))
         Set searchField =  objFrame.JavaEdit("attached text:=" + label)       'Javaedit should be the child of the login window. You had to mention the full hierarchy here
    End Function
    

    【讨论】:

    • 我确实尝试过,因为 RFT 以类似的方式工作,但 UFT 仍然拒绝识别该字段,并且由于 UFT 几乎不存在错误报告,我不确定还有什么其他选择。
    • 你能贴出在OP中突出显示webedit的object spy截图吗
    • @TheFaster 可能某处有多余的空间或没有空间。我知道您一定已经确定了,但请您重新检查变量标签中包含的值与屏幕截图中显示的值完全相同。为此,请打开对象间谍,单击值(用户 ID / Ci-Usager),将其复制并粘贴到您的代码中(不要自己编写 - 只需复制和粘贴)。
    • @Kira 很好的建议,但我对自己的错误能力有足够的了解,可以相信徒手打字而不是复制粘贴。代码中的所有值都是从 Spy 值复制粘贴
    • @MithileshIndurkar 添加了全屏截图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2019-10-06
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多