Python: 在OS X 中激活window
Python: Activate window in OS X
我是 运行 OS X 10.11
,我使用 Python
和 Selenium
创建了一个网络抓取工具。爬虫使用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)
我是 运行 OS X 10.11
,我使用 Python
和 Selenium
创建了一个网络抓取工具。爬虫使用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)