从Xcode执行的NSAppleScript无法“告诉应用程序”

时间:2018-08-23 22:18:19

标签: swift xcode applescript xctest nsapplescript

我在XCTest中编写了一个可以成功执行AppleScript的函数,但是在执行期间脚本无法访问任何应用程序。

这是我的AppleScript之一,我正在尝试运行:

tell application "System Events"
    set appProcessNames to the name of every application process
end tell

以下是执行AppleScipt的函数:

private func runAppleScript(scriptURL: URL) -> String? {
    var errorInfo:NSDictionary?
    if let script = NSAppleScript(contentsOf: scriptURL, error: &errorInfo) {
        let result = script.executeAndReturnError(&errorInfo)
        if result.stringValue != nil {
            return result.stringValue!
        } else {
        return "\(errorInfo!)"
        }
    }
    return nil
}

但是,我从NSAppleScript得到的响应是:

NSAppleScriptErrorAppName = "System Events";
NSAppleScriptErrorBriefMessage = "Application isn\U2019t running.";
NSAppleScriptErrorMessage = "System Events got an error: Application isn\U2019t running.";
NSAppleScriptErrorNumber = "-600";
NSAppleScriptErrorRange = "NSRange: {0, 0}";

环境条件:

  • Mac 10.13.6
  • Xcode 9.2版
  • 项目未沙盒化(或至少“应用程序沙盒”已关闭)
  • 系统偏好设置>安全性和隐私>可访问性>隐私:: 已选中AppleScript Utility.app,脚本编辑器和Xcode Helper.app。

编辑: 显然,由于我正在执行UI测试,因此无论如何都将应用程序沙盒化。将AppleScript与XCTest集成的解决方法是使用NSUserAppleScriptTask而不是NSAppleScript。

0 个答案:

没有答案