我正在运行OS X 10.11
,我使用Python
和Selenium
创建了一个网络抓取工具。刮刀使用Firefox
作为浏览器来收集数据。
Firefox窗口必须在所有关键步骤中保持活动状态,以便刮刀工作。
当我以Firefox作为活动窗口离开计算机时,当我返回时,我经常发现活动窗口焦点已更改为其他内容。有些过程正在窃取窗口焦点。
有没有办法可以编程方式告诉操作系统激活Firefox窗口?如果是这样,我可以告诉脚本在脚本中的每个关键操作之前执行此操作。
最好,这是我想用Python实现的。但启动辅助AppleScript
来执行此特定任务也可能是一种解决方案。
注意: Atm,我没有考虑重写我的脚本以使用无头浏览器 - 只是通过强制激活窗口使其工作。
答案 0 :(得分:3)
您可以在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)
答案 1 :(得分:1)
tell application "Firefox" to activate
是在AppleScript中执行此操作的方法