2011-02-28 39 views

回答

2

如果你在MacOS或Linux上,不知道該告訴你什麼......我敢打賭這是可能的,但我需要了解我自己。 :)

如果你在Windows上,我確實有一些建議。我建議檢查出RAutomation寶石,這是很好的這樣的任務(定位和點擊Firefox的打印對話框中取消):

https://github.com/jarmo/RAutomation

或者你可以嘗試使用的AutoIt。安裝Watir還會安裝一個AutoItX3.dll副本,您可以使用這個副本進行簡單的GUI自動化。

要查看AutoIt的是準備好你的系統上使用,嘗試了這一點在IRB - 這個代碼將等待10秒鐘,Firefox的打印對話框出現,然後點擊取消按鈕:

irb(main):001:0> require 'win32ole' 
=> true 
irb(main):002:0> autoit = WIN32OLE.new('AutoItX3.Control') 
=> #<WIN32OLE:0x3c61ce0> 
irb(main):003:0> result = autoit.WinWaitActive('Print', '', 10) 
=> 1 
irb(main):004:0> result = autoit.ControlClick('Print', '', 'Cancel') 
=> 1 

如果「WIN32OLE.new('AutoItX3.Control')」行引發異常,您可能需要使用regsvr32.exe來註冊該DLL。例如,這裏是如何做到這一點Win7上:

  • 啓動提升的cmd.exe

  • REGSVR32 C:\ Ruby187 \ LIB \紅寶石\寶石\ 1.8 \寶石\的Watir-1.6.5 \ LIB \的Watir \ AutoItX3.dll

(請注意,您可能需要更改路徑上面,如果你的Ruby安裝是不是在C:\ Ruby187或者你有不同的Watir版本比1.6.5)

AutoIt文檔是在這裏:

http://www.autoitscript.com/autoit3/docs/

最後一件事要注意:

如果在你的代碼,帶來了打印對話框塊的聲明,直到對話框關閉,事情變得更加複雜。您需要使用線程或外部進程來處理對話框(因爲我不認爲FireWatir有一個click_no_wait方法)。

+0

該自動解決方案完美工作。 – Roderick 2011-03-01 17:44:45