0

我有nxcode ios 模拟器的实例,我想将焦点切换到具有指定 ID 的实例。我尝试了接下来的事情:

  • 使用“打开”切换焦点:open -a Simulator --args -CurrentDeviceUDID <id>。但它会打开最后一个聚焦的模拟器实例,而不是带有传递 id 的实例。
  • 使用 simctl 工具切换焦点。我试图在模拟器的特定实例中打开 URL xcrun simctl openurl <id> "https://www.google.com",但它并没有改变焦点。
  • 使用 applescript - 它仍然专注于最后一个专注的模拟器实例:
tell application "System Events" to tell process "Simulator"
    perform action "AXRaise" of window 0
end tell

你有什么想法,如何做到这一点? 在此处输入图像描述

4

1 回答 1

1

以下示例 AppleScript 代码是一种适用于我的方法:

示例 AppleScript 代码

tell application "Simulator"
    activate
    set winName to the name of ¬
        the first window ¬
            whose visible is true ¬
        and index is not 1
end tell

tell application "System Events" to ¬
    perform action "AXRaise" of ¬
        window winName of ¬
        process "Simulator"

笔记:

示例 AppleScript 代码假定您有两个可见的模拟器 窗口,并且它将在两者之间切换提升。显然这只是一个示例,您需要修改该方法并将其合并到您自己的代码中。

在您的示例 AppleScript 代码中,window  <em>n 指的是它的索引,如下所示:

index (integer) :窗口的索引,从前到后排序。

    上面引用的行来自Script EditorSimulatorAppleScript 字典

索引z 顺序从:1开始

使用系统事件perform action "AXRaise" of window ...可以通过它的name 属性或它的index 属性来完成。

上面显示的示例 AppleScript 代码在macOS Catalina下的脚本编辑器中进行了测试,系统偏好设置中的语言和区域设置设置为英语(美国) - 主要并为我工作,没有问题1

  • 1 假设系统偏好设置>安全和隐私>隐私中的必要和适当设置已根据需要进行设置/解决。


注意:示例 AppleScript 代码就是这样,并且没有任何包含的错误处理,不包含任何可能适当的额外错误处理。用户有责任根据需要或需要添加任何错误处理。查看AppleScript 语言指南中的try 语句错误 语句。另请参阅处理错误。此外,在适当的情况下,可能需要在事件之间使用延迟命令,例如,使用延迟 delay 0.5适当设置。

于 2021-08-23T13:11:29.450 回答