我正在运行OS X 10.11
,并且我已经使用Python
和Selenium
创建了一个web scraper。scraper使用Firefox
作为浏览器来收集数据。
Firefox窗口必须在所有关键步骤都保持活动状态,以便刮刀工作。
当我离开以Firefox为活动窗口的电脑时,当我返回时,我经常发现活动窗口的焦点已经变为其他内容。某些过程正在窃取窗口焦点。
有没有一种方法可以让我用程序告诉操作系统激活Firefox窗口?如果是这样的话,我可以在脚本中的每个关键操作之前告诉脚本这样做。
最好,这是我想使用Python实现的。但是,启动第二个AppleScript
来完成这一特定任务也可能是一个解决方案。
注意:Atm,我不打算重写脚本以使用无头浏览器,只是通过强制激活窗口来使其工作。
您可以在python中使用AppleEvents导入模块Carbon
。这里是一个python脚本通过其bundle标识符激活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)
tell application "Firefox" to activate
是在AppleScript 中执行此操作的方法