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

时间:2013-10-10 11:10:17

标签: vbscript qtp hp-uft

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

Set UVC = JavaDialog("UVC")
wait(20)
If UVC.Exist Then
    UVC.JavaEdit("JTextField").Set "admin"
    wait(2)
    UVC.JavaEdit("PSW").SetSecure "5256833195fsdqsdsqd447e4beefsdsdqd"
    wait(5)
    UVC.JavaButton("Connect").Click
Else
    print "Console is not present"
End If

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

MsgBox Main.JavaEdit("password").GetROProperty("attached_text")

我还尝试设置密码而不加密,但它也无效。

PS:之前的同一个剧本正在运作,并且因为一个未知的原因而停止工作!!!

提前致谢。

3 个答案:

答案 0 :(得分:1)

替换

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

UVC.JavaEdit("PSW").Click 1,1
UVC.JavaEdit("PSW").SetSecure "5256833195fsdqsdsqd447e4beefsdsdqd"

即使使用重播模式=“事件”也能正常工作。如果你想美化它,你可以在字段中间点击一下,如:

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

似乎大多数Java密码字段必须首先集中在SetSecure - 能够。

答案 1 :(得分:0)

只是为了确定..通过测试.getroproperty(“editable”)来检查字段是否已启用。

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

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

    1. 您也可以使用JavaEdit的类型对象
    2. 任何这些方法都适合您。如果不是运气不好.. :)

答案 2 :(得分:0)

感谢您的回答,但没有任何建议有效,我最终使用了基本的转变:

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

我真的不知道同样的功能有时会如何工作,有时候不会!