Python: 在OS X 中激活window

Python: Activate window in OS X

我是 运行 OS X 10.11,我使用 PythonSelenium 创建了一个网络抓取工具。爬虫使用Firefox作为浏览器来收集数据。

Firefox window 必须在所有关键步骤保持活动状态,以便抓取程序正常工作。

当我将 Firefox 作为活动 window 离开计算机时,当我 return 我经常发现活动 window 焦点已更改为其他内容。某些进程正在窃取 window 焦点。

有没有一种方法可以通过编程告诉 OS 激活 Firefox window?如果是这样,我可以告诉脚本在脚本中的每个关键操作之前执行此操作。

最好是,这是我想使用 Python 实现的。但是启动辅助 AppleScript 来执行此特定任务也可能是一种解决方案。

注意: Atm,我不打算重写我的脚本以使用无头浏览器——只是为了通过强制激活 window.

tell application "Firefox" to activate

是在 AppleScript 中实现的方法

您可以在 python 导入模块 Carbon 中使用 AppleEvents。这是一个 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)