Applescript 使用OS X JavaScript打开新的终端选项卡以实现自动化

Applescript 使用OS X JavaScript打开新的终端选项卡以实现自动化,applescript,osx-yosemite,javascript-automation,Applescript,Osx Yosemite,Javascript Automation,我正在约塞米蒂操作系统上使用JavaScript实现自动化 我正在尝试在终端应用程序中打开一个新选项卡。以下是我到目前为止得到的信息: var Terminal = Application('Terminal); var Tab = Terminal.Tab; // Activate the Terminal App, creates a new window if there isn't one already Terminal.activate(); // This conta

我正在约塞米蒂操作系统上使用JavaScript实现自动化

我正在尝试在终端应用程序中打开一个新选项卡。以下是我到目前为止得到的信息:

var Terminal = Application('Terminal);
var Tab      = Terminal.Tab;

// Activate the Terminal App, creates a new window if there isn't one already
Terminal.activate();

// This contains all the windows
Terminal.windows;
// This contains the first window
Terminal.windows.at(0) // alternatively, Terminal.windows[0]

// This contains the tabs in the first window
Terminal.windows.at(0).tabs
终端.windows.at(0).tabs本质上是一个数组。它有一个
.push
方法。我假设可以使用以下语句向窗口添加选项卡:

Terminal.windows.at(0).tabs.push(new Tab());
但它带来了一个非常普遍的错误:

Error -10000: AppleEvent handler failed.
文档严重缺乏,我认为这个JavaScript for automation的东西只是让JavaScript开发人员参与进来的一个花招


注意:我看到过AppleScript解决方案,它基本上只是告诉
系统事件
应用程序按Command+T打开一个新选项卡。这让人感觉非常不舒服,并且使得Command+T在那里被硬编码。

以下代码适用于
chrome
safari
,但不适用于
终端,我仍在寻找原因,看看这些信息是否有用

chrome = Application("Google Chrome")
newTab = chrome.Tab()
chrome.windows[0].tabs.push(newTab)

查看以下各项是否适用于您的情况:

var system = Application('System Events');
var terminal = Application('Terminal');

// tell application "Terminal" to activate
terminal.activate();  

// tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
system.keystroke('t', {using: 'command down'});

您可以模拟一个新选项卡的快捷方式。还需要声明目标选项卡

tell application "System Events" to keystroke "t" using {command down}
查看带有两个或多个选项卡的示例

teel application "Terminal"
    do script "cd ~/ && ls" in tab 1 of front window
    tell application "System Events" to keystroke "t" using {command down}
    do script "cd ~/Applications && ls" in tab 2 of front window
end tell
“Terminal.windows.at(0).tabs本质上是一个数组”--这是不正确的。它实际上是一个查询对象(“对象说明符”),描述窗口对象与其选项卡对象之间的一对多关系。(JXA的实现是FUBAR,它的文档是假的,苹果对用户的支持几乎是不存在的。欢迎。)尽管在这个场合,真正的罪魁祸首是终端糟糕的苹果事件界面:它的
make
命令完全被破坏了,并且已经运行了多年。因此,你要么求助于GUI脚本,要么自己找一个更好的终端模拟器应用程序,比如iTerm。很抱歉