Python:在 OS X 中激活窗口

标签 python macos applescript

我正在运行 OS X 10.11,并且我使用 PythonSelenium 创建了一个网络抓取工具。爬虫使用 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/

相关文章:

python - 在 Pandas 中使用 idxmax 保留重复值

python相当于cmd的 "for %%a in (%*) do"

python - 我正在尝试围绕 python 中的给定索引旋转数组

python - Python 3.6 的最新 Anaconda 包可以用于 Python 3.5 吗?

ios - CIAreaHistogram + CIHistogramDisplayFilter 得到亮度直方图

java - Sonarqube 中不兼容的堆大小错误

linux - 在 OSX 10.9 上 Pstack 进程

macos - 无法在 Applescript 中获取给定应用程序的 POSIX 路径

javascript - 在applescript中选择一个html按钮

mysql - 通过 AppleScript 在终端中格式化 MySQL 脚本 - 引用转义问题