2013-10-10 81 views
1

我編寫了一個簡單的腳本來登錄到填充用戶名和密碼的Java應用程序,然後單擊「連接」按鈕。 。QTP識別JavaEdit對象,但無法在運行腳本時設置值

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:相同的腳本之前工作,並從此停止工作,原因不明!

在此先感謝。

+0

調用SetSecure時會出現什麼錯誤?或者是沒有錯誤,並且該值沒有設置?此外,您在那裏有Wait語句的事實表明,在設置用戶名後,應用程序中的某些內容正在更新 - 是這種情況嗎? – Xiaofu

+0

我沒有收到SetSecure的任何錯誤,執行了這一步,但我可以看到密碼沒有設置。我添加了等待語句只是爲了調試,但沒有要等待的事件。 – Ziwdigforbugs

+0

從SetSecure獲取返回值,查看它是否返回錯誤代碼。同時檢查Err.Number或Err.Description hsa是否在之後立即被填充。 – Xiaofu

回答

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 

我真不明白怎麼會相同有時功能工作,有時不會!

+0

我認爲無法在您的應用程序未實現窗口焦點更改時無法工作。每當Windows使焦點更改應用程序的任務欄按鈕閃爍時,都會出現這種情況。根據我的經驗,SetSecure取決於具有焦點的應用程序窗口。不知道爲什麼。 – TheBlastOne

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 -able。

0

只是要確定該字段是否通過測試.getroproperty(「可編輯」)來啓用。

使用任何這些方法在Java編輯字段中設置文本。

  1. 你可以使用JavaEdit(「PSW」)Object.Settext方法 - 這使用的JTextField在JavaSwing對象屬性
  2. 你可以在現場
  3. 獲取位置輸入字符串之前使用SetFocus方法測試場的

X = JavaEdit( 「PSW」)。Getroproperty( 「abs_x」)
Y = JavaEdit( 「PSW」)。Getroproperty( 「abs_y」)
集DRP = CreateObje CT( 「Mercury.DeviceReplay」)
DRP.MouseClick X,Y, 「0」
DRP.SendString 「字符串」

  1. 你也可以使用JavaEdit的對象類型

任何這些方法應該適合你。如果不是倒黴.. :)

相關問題