2014-04-02 169 views
0

我有一個JNLP文件(比如Test.jnlp)。我用AutoIt打開了這個文件。我的代碼打開Test.jnlp文件:如何在文本字段上輸入文本並使用AutoIt單擊按鈕

$d = "D:\Ripon\" 
$f = "Test.jnlp" 
Run("cmd /c " & " """ & $d & $f & """ ", "", @SW_HIDE) 

打開.jnlp文件後,登錄屏幕出現。我的要求是輸入用戶名和密碼 - >點擊登錄按鈕。
因爲我找不到元素的身份(文本字段,按鈕),我沒有做到這一點。請幫幫我。

enter image description here

+1

究竟失敗了嗎?不能輸入或不登錄? –

+0

其實我找不到文本字段和按鈕的身份。我需要id,名稱或類似於元素的內容(如文本字段,按鈕) –

+0

Test.jnlp文件也可以通過這種方式打開:ShellExecute(「D:\ Ripon \ Test.jnlp」) –

回答

4

有幾種類型的GUI的是不給你IDS的控制,幾乎所有的Java工具包是這樣一個例子。

還有自動化他們的幾種方法:

  1. 假設窗口總是相同的尺寸(通常是一個非常安全的假設進行),然後AutoIt的將允許您單擊窗口在給定的位置,或發送文本到該窗口。例如,在上述情況下,你可以試試下面的代碼:

    ControlSend("Window Title", "", "", "MyUsername{TAB}MyPassword{ENTER}")

  2. 另一種解決方案是使用輔助功能。如果你的谷歌'自動Java可訪問性橋'我相信你會得到一些結果,如this one。我從來沒有親自嘗試過。

  3. 還有一個java access bridge不知道這是如何工作,但其他人一直在使用它。

作爲最後的手段,您必須模仿用戶鼠標和鍵盤操作。這真的不是最好的解決方案,但至少你可以肯定它會起作用。

+0

感謝Matt,for給出好的解決方案我試過了。 1並且運作良好。我也會去嘗試不。 2&3收集知識 –

+2

重要的是,使用ID是可選的!您也可以在沒有給定ID的情況下使用ControlCommands! – Xenobiologist

1

下面的代碼片段應該工作:

Send("username") 
Send("{TAB}") 
Send("password") 
Send("{ENTER}") 
相關問題