我正在运行 OS X 10.11
,并且我使用 Python
和 Selenium
创建了一个网络抓取工具。爬虫使用 Firefox
作为浏览器来收集数据。
Firefox 窗口必须在所有关键步骤保持事件状态,以便抓取程序正常工作。
当我将 Firefox 作为事件窗口离开计算机时,当我返回时,我经常发现事件窗口焦点已更改为其他内容。某些进程正在窃取窗口焦点。
有没有一种方法可以通过编程告诉操作系统激活 Firefox 窗口?如果是这样,我可以告诉脚本在脚本中的每个关键操作之前执行此操作。
最好,这是我想使用 Python 实现的东西。但是启动辅助 AppleScript
来执行此特定任务也可能是一种解决方案。
注意:Atm,我并不想重写我的脚本以使用 headless 浏览器——只是为了通过强制激活窗口使其工作。
最佳答案
您可以在 python 中使用 AppleEvents 导入模块 Carbon
。这里是一个通过包标识符激活 FireFox 的 python 脚本示例。
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)
关于Python:在 OS X 中激活窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705575/