首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python代替AppleScript

用Python代替AppleScript
EN

Stack Overflow用户
提问于 2015-01-21 02:19:36
回答 5查看 10.6K关注 0票数 5

我经常使用Applescript来完成一些基本任务,比如打开和关闭程序,有时更深入一些,比如运行特定Xcode程序的单元测试。我在学Python,我喜欢它。我还没有找到很多与Python相关的AppleScript文档。我的问题是:在Mac上,可以用Python代替AppleScript来完成上述任务吗?如果是这样的话,有没有人知道更多关于这个话题的好资源?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-01-21 03:01:43

Python不能用来取代AppleScript提供的UI和自动化功能。但是,由于OSX10.10(约塞米蒂) JavaScript也可以使用。

见此处:https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/index.html

票数 3
EN

Stack Overflow用户

发布于 2016-12-30 16:34:35

为了避免所有过时和所谓的“糟糕”模块,包括PyObjC,人们可以简单地调试脚本编辑器或脚本调试器(我的选择),然后使用osascript执行它。我更喜欢这样做,这样我就可以确保应用程序实现的特性得以实现,并且Script Debugger拥有很好的调试和浏览工具。

例如:

代码语言:javascript
运行
复制
from subprocess import Popen, PIPE

def get_front_win_id():
    """
    Get window id of front Chrome browser window
    """
    script = '''
        on run {}
            set winID to 0
            tell application "Google Chrome"
                set winID to id of front window
                return winID
            end tell
        end run
    '''
    args = []
    p = Popen(['/usr/bin/osascript', '-'] + args,
              stdin=PIPE, stdout=PIPE, stderr=PIPE)
    stdout, stderr = p.communicate(script)
    winID = stdout.strip()
    return int(winID)

将列表中的arg传递给osascript,但是它们必须是字符串,所以复杂的数据结构可能会乏味地封送和解封送出,但是简单是要付出代价的。为了简单起见,我停止了错误检查和异常处理/引发。塔斯达

票数 3
EN

Stack Overflow用户

发布于 2016-05-15 00:45:27

使用Cocoa,您可以使用AESendMessage直接发送事件。不过,这是更多的工作。下面是一个要点,它提供了一个示例:

代码语言:javascript
运行
复制
https://gist.github.com/pudquick/9683c333e73a82379b8e377eb2e6fc41
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28058546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档