我经常使用Applescript来完成一些基本任务,比如打开和关闭程序,有时更深入一些,比如运行特定Xcode程序的单元测试。我在学Python,我喜欢它。我还没有找到很多与Python相关的AppleScript文档。我的问题是:在Mac上,可以用Python代替AppleScript来完成上述任务吗?如果是这样的话,有没有人知道更多关于这个话题的好资源?
发布于 2015-01-21 03:01:43
Python不能用来取代AppleScript提供的UI和自动化功能。但是,由于OSX10.10(约塞米蒂) JavaScript也可以使用。
发布于 2016-12-30 16:34:35
为了避免所有过时和所谓的“糟糕”模块,包括PyObjC,人们可以简单地调试脚本编辑器或脚本调试器(我的选择),然后使用osascript执行它。我更喜欢这样做,这样我就可以确保应用程序实现的特性得以实现,并且Script Debugger拥有很好的调试和浏览工具。
例如:
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,但是它们必须是字符串,所以复杂的数据结构可能会乏味地封送和解封送出,但是简单是要付出代价的。为了简单起见,我停止了错误检查和异常处理/引发。塔斯达
发布于 2016-05-15 00:45:27
使用Cocoa,您可以使用AESendMessage直接发送事件。不过,这是更多的工作。下面是一个要点,它提供了一个示例:
https://gist.github.com/pudquick/9683c333e73a82379b8e377eb2e6fc41https://stackoverflow.com/questions/28058546
复制相似问题