2011-04-27 72 views
1

我是JWinAuto和AutoIT的新手。 我想單擊文件下載控件上的保存按鈕。 我能夠把焦點放在按鈕上,但是如果當前的文件下載不是焦點,它不會點擊。我已將其設置爲最高並激活它以使其聚焦。但是我仍然無法點擊按鈕。 我在這裏附上代碼。任何人都可以告訴我是否缺少一些東西..無法點擊文件下載按鈕JWinAuto

  private static final WString BLANK_STRING = new WString(""); 
      private static final WString FILE_DOWNLOAD = new WString("File Download"); 
      System.out.println("hi.."); 
      JAutoITx wrapper = JAutoITx.INSTANCE; 
      wrapper.AU3_Init(); 
      wrapper.AU3_WinWait(FILE_DOWNLOAD, BLANK_STRING, 15); 
      wrapper.AU3_WinActivate(FILE_DOWNLOAD, BLANK_STRING); 
      System.out.println(wrapper.AU3_WinActive(FILE_DOWNLOAD, BLANK_STRING)); 
      wrapper.AU3_WinSetOnTop(FILE_DOWNLOAD, BLANK_STRING, 0); 
      wrapper.AU3_ControlFocus(FILE_DOWNLOAD, BLANK_STRING, new WString(
          "[CLASS:Button; INSTANCE:2]")); 
      wrapper.AU3_ControlClick(FILE_DOWNLOAD, BLANK_STRING, new WString(
          "[CLASS:Button; INSTANCE:2]"), BLANK_STRING, 1, 6660, 500); 
      wrapper.AU3_Send(new WString("s"), 0); 

回答

2

您不必爲使ControlClick工作而關注窗口。它也不必被激活,設置在頂端等。我知道這些只是測試,但ControlClick線應該足夠自己。

這條線:

wrapper.AU3_ControlClick(FILE_DOWNLOAD, BLANK_STRING, new WString("[CLASS:Button; INSTANCE:2]"), BLANK_STRING, 1, 6660, 500); 

ControlClick 「稱號」, 「文本」, 「控件ID」[,按鈕[,點擊[,X [,Y]]]]

你基本上說:點擊按鈕左側的6660像素按鈕和頂部的500按鈕。該按鈕可能會收到消息,並檢查客戶端是否在自己的座標內點擊。如果是這樣,按鈕將不得不6660x500像素大,我在這裏猜測,但我敢肯定它不是那麼大。

特別是因爲參數是可選的,爲什麼你會通過這些?只要做這樣的事情:

wrapper.AU3_ControlClick(FILE_DOWNLOAD, BLANK_STRING, new WString("[CLASS:Button; INSTANCE:2]"), BLANK_STRING, 1, 0, 0); 

看看它是否只適用於ControlClick。另外,一些應用程序會在處理髮送給控件的任何命令之前檢查窗口是否處於活動狀態,但大多數應用程序不會。

如果這不能回答你的問題,那麼我想知道哪個應用程序的「文件下載」按鈕屬於,所以我可以自己寫一個測試。

+0

謝謝Mandar。我嘗試使用這個,但它沒有用。有時它起作用,有時不起作用。早些時候,我嘗試通過直接使用窗口名稱,但它不工作,所以我嘗試使用Windows,但結果相同。另外一種情況是:單擊IE頁面中的下載鏈接,查看對話框,打開Chrome或Opera瀏覽器實例。並運行失敗的程序。我不知道爲什麼會發生。如果你有一個文件下載的例子,它將工作,無論窗口是否有焦點或不應該罰款。文件下載適用於我們的客戶端應用程序,就像任何webapp一樣。 – 2011-04-28 10:04:19