2016-01-10 100 views
0

我正在運行OS X 10.11,並且我創建了一個使用PythonSelenium的網絡抓取工具。該刮板使用Firefox作爲瀏覽器來收集數據。Python:激活窗口在OS X

在所有關鍵步驟中,Firefox窗口必須保持活動狀態,以便刮板正常工作。

當我用Firefox作爲活動窗口離開計算機時,當我返回時,我經常發現活動窗口焦點已改變爲其他內容。某些過程正在偷竊窗口焦點。

有沒有一種方法可以通過編程方式告訴操作系統激活Firefox窗口?如果是這樣,我可以告訴腳本在腳本中的每個重要操作之前執行該操作。

最好,這是我想用Python實現的東西。但是啓動一個輔助AppleScript來完成這個特定的任務也可能是一個解決方案。

注意: Atm,我沒有考慮重寫我的腳本以使用無頭瀏覽器 - 只是通過強制激活窗口來使其工作。

回答

2

您可以使用Python中的AppleEvents導入模塊Carbon的方式。這裏是一個python腳本通過其包標識符激活FireFox的例子。

from Carbon import AppleEvents 
from Carbon import AE 
target = AE.AECreateDesc(AppleEvents.typeApplicationBundleID, "org.mozilla.FireFox") 
activateEvent = AE.AECreateAppleEvent('misc', 'actv', target, AppleEvents.kAutoGenerateReturnID, AppleEvents.kAnyTransactionID) 
activateEvent.AESend(AppleEvents.kAEWaitReply, AppleEvents.kAENormalPriority, AppleEvents.kAEDefaultTimeout) 
+0

這救了我。謝謝! – Winterflags

+0

如果我有幾個Firefox窗口打開,如何激活特定的窗口? – Ekkstein

1

tell application "Firefox" to activate

是做它的AppleScript