NSAppleScript, выполненный из XCode, не может "сказать приложение"
Я написал функцию в 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 CHECKED.
РЕДАКТИРОВАТЬ: Очевидно, потому что я выполняю тест пользовательского интерфейса, приложение изолированно изолированно. Обходной путь для интеграции AppleScript с XCTest - использовать NSUserAppleScriptTask вместо NSAppleScript.