Vbscript QTP识别JavaEdit对象,但在运行脚本时无法设置值

Vbscript QTP识别JavaEdit对象,但在运行脚本时无法设置值,vbscript,qtp,hp-uft,Vbscript,Qtp,Hp Uft,我编写了一个简单的脚本,用于登录Java应用程序,在其中填写用户名和密码,然后单击“连接”按钮 奇怪的是,QTP正确识别了我的密码字段。当运行以下代码时,我按预期返回了一个值: MsgBox Main.JavaEdit("password").GetROProperty("attached_text") 我也尝试过在不加密的情况下设置密码,但它也不起作用 PS:同一个脚本以前工作过,后来由于未知原因停止工作 提前感谢。更换 UVC.JavaEdit("PSW").SetSecure "5256

我编写了一个简单的脚本,用于登录Java应用程序,在其中填写用户名和密码,然后单击“连接”按钮

奇怪的是,QTP正确识别了我的密码字段。当运行以下代码时,我按预期返回了一个值:

MsgBox Main.JavaEdit("password").GetROProperty("attached_text")
我也尝试过在不加密的情况下设置密码,但它也不起作用

PS:同一个脚本以前工作过,后来由于未知原因停止工作

提前感谢。

更换

UVC.JavaEdit("PSW").SetSecure "5256833195fsdqsdsqd447e4beefsdsdqd"

它甚至可以使用重放模式=“事件”。如果你想美化这一点,你可以在字段中间点击,如:

With UVC.JavaEdit("PSW")
    .Click .GetROProperty ("width")\2, .GetROProperty ("height")\2
    .SetSecure "5256833195fsdqsdsqd447e4beefsdsdqd"
End With
似乎大多数Java密码字段必须首先集中在
SetSecure
-able上。

替换

UVC.JavaEdit("PSW").SetSecure "5256833195fsdqsdsqd447e4beefsdsdqd"

它甚至可以使用重放模式=“事件”。如果你想美化这一点,你可以在字段中间点击,如:

With UVC.JavaEdit("PSW")
    .Click .GetROProperty ("width")\2, .GetROProperty ("height")\2
    .SetSecure "5256833195fsdqsdsqd447e4beefsdsdqd"
End With

似乎大多数Java密码字段必须首先聚焦于
SetSecure
-able.

以确保..通过测试.getroproperty(“可编辑”)来检查该字段是否已启用

使用以下任何方法在Java编辑字段中设置文本

  • 您可以使用JavaEdit(“PSW”).Object.Settext方法-这使用JavaSwing对象属性中的JTextField
  • 在字段中输入字符串之前,可以使用setfocus方法
  • 获取测试字段的位置
  • x=JavaEdit(“PSW”).Getroproperty(“abs_x”)
    y=JavaEdit(“PSW”).Getroproperty(“abs_y”)
    设置DRP=CreateObject(“Mercury.DevicePlay”)
    DRP.MouseClick x,y,“0”
    DRP.SendString“字符串”

  • 您还可以使用JavaEdit的类型对象

  • 这些方法中的任何一种都应该适用于您。如果运气不好..:)

    只是为了确定..请检查该字段是否已通过测试.getroperty(“可编辑”)启用

    使用以下任何方法在Java编辑字段中设置文本

  • 您可以使用JavaEdit(“PSW”).Object.Settext方法-这使用JavaSwing对象属性中的JTextField
  • 在字段中输入字符串之前,可以使用setfocus方法
  • 获取测试字段的位置
  • x=JavaEdit(“PSW”).Getroproperty(“abs_x”)
    y=JavaEdit(“PSW”).Getroproperty(“abs_y”)
    设置DRP=CreateObject(“Mercury.DevicePlay”)
    DRP.MouseClick x,y,“0”
    DRP.SendString“字符串”

  • 您还可以使用JavaEdit的类型对象

  • 这些方法中的任何一种都应该对你有用。如果运气不好的话:)

    谢谢你的回答,但是你的建议都不管用,我最终使用了一个基本的转变:

    UVC.JavaEdit("JTextField").Set"admin"
    UVC.JavaEdit("PSW").Click 1,1
    UVC.JavaEdit("PSW").SetSecure"52581237d889935df36ae78587773a641f40"
    UVC.JavaButton("Connect").Click
    wait (5)
    While JavaDialog("Login Error").Exist 
    JavaDialog("Login Error").JavaButton("Ok").click
    UVC.JavaEdit("PSW").RefreshObject
    UVC.JavaEdit("PSW").SetSecure"52581237d889935df36ae78587773a641f40"
    UVC.JavaButton("Connect").Click
    Wend
    

    我真的不明白为什么同一个函数有时能工作,有时不能!!

    谢谢你的回答,但你的建议都不起作用,我最终使用了一个基本的转变:

    UVC.JavaEdit("JTextField").Set"admin"
    UVC.JavaEdit("PSW").Click 1,1
    UVC.JavaEdit("PSW").SetSecure"52581237d889935df36ae78587773a641f40"
    UVC.JavaButton("Connect").Click
    wait (5)
    While JavaDialog("Login Error").Exist 
    JavaDialog("Login Error").JavaButton("Ok").click
    UVC.JavaEdit("PSW").RefreshObject
    UVC.JavaEdit("PSW").SetSecure"52581237d889935df36ae78587773a641f40"
    UVC.JavaButton("Connect").Click
    Wend
    

    我真的不明白为什么同一个函数有时能工作,有时不能!!

    调用SetSecure时会出现什么错误?或者是没有错误,值就是没有设置?还有,事实上,你在那里有等待语句,这表明在你设置用户名后,应用程序中有一些东西正在更新-是这样吗?我没有得到答案y SetSecure出现错误,该步骤已执行,但我可以看到密码未设置。我添加了wait语句只是为了调试,但没有需要等待的事件。从SetSecure获取返回值,查看它是否返回错误代码。同时检查错误号或错误说明hsa是否已在之后立即填充。问题被证明是错误的与应用程序本身相关,会无故触发错误弹出窗口。感谢您的帮助。哦,请添加“解决方案”作为答案,并自己接受它,因此(已回答/已解决)问题不再出现在未回答问题的列表中。调用SetSecure时会出现什么错误?或者没有错误,并且没有设置值?此外,您在其中有等待语句这一事实表明,在您设置用户名后,应用程序中的某些内容正在更新-是这样吗?我没有收到SetSecure的任何错误,该步骤已执行,但我可以看到密码未设置。我添加了wait语句只是为了调试,但没有要等待的事件。从SetSecure获取返回值,查看它是否返回错误代码。还要检查错误号或错误说明hsa是否在之后立即填充。该问题与applic有关如果没有任何原因会触发错误弹出框,请自行选择。谢谢您的帮助。哦,请添加“解决方案”作为答案,并自己接受它,这样(已回答/已解决)问题不再出现在未回答问题的列表中。我认为,每当应用程序窗口中的焦点发生未实现的更改时,该问题将无法工作。当windows使焦点更改应用程序的任务栏按钮闪烁时,就是这种情况。根据我的经验,设置安全取决于应用程序窗口是否具有焦点。是否执行此操作但我不知道为什么。我认为,只要你的应用程序窗口中存在未实现的焦点更改,它就无法工作。只要windows使焦点更改应用程序的任务栏按钮闪烁,就会出现这种情况。根据我的经验,设置安全性取决于应用程序窗口是否具有焦点。但我不知道为什么。