Xcode 7为OS X菜单栏应用程序提供UI测试

7

我正在尝试使用XCode 7的UITesting来对类似于Mac OS X上的Dropbox、1Password等Menubar应用进行自动化UI测试。最新版本的XCode 7是否支持此功能?我知道UI Testing适用于iOS应用程序,但是视频演示没有展示它是否适用于OS应用程序。如果它适用于OS X应用程序,那么它是否适用于Menubar应用程序?请帮我解决这个问题。


1
我遇到了完全相同的问题。你可以对OSX应用进行UI测试,但是如果在Info.plists上启用“应用程序是代理(UIElement)”选项,则XCUIApplication().launch()将停止工作。有什么想法吗? - Gaston
2个回答

2
我发现一个更好的解决方案,受到此答案的启发:https://dev59.com/DFXTa4cB1Zd3GeqP1nCb#5384319 不要从Info.plist中删除Dock功能,最好是通过编程方式将应用程序的"激活策略"设置为"accessory"。
在Xcode 8.1中,可以使用Swift3实现:
func applicationDidFinishLaunching(_ aNotification: Notification) {
    NSApp.setActivationPolicy(NSApplicationActivationPolicy.accessory)
}

最大的好处是它在运行时和UI测试中都可以使用,无需进行修改。您无需根据应用程序是否在UI测试中运行来激活或停用激活策略。

它只需要正常运行即可。


1

我知道这个问题很老,但我想分享我的答案。

我创建了一个 Info.plist 文件的副本,并将其中的 LSUIElement 设置为 NO。然后,我创建了一个新的“UITesting”配置,并将其 INFOPLIST_FILE 构建设置指向该副本。更好的选择是创建一个用户定义的构建设置,然后将该设置的值分配给 LSUIElement,但 Xcode 不允许使用布尔值。

一旦你设置好了 UITesting 配置,就可以编辑方案,在测试期间使用此配置。


有点令人困惑。你能否请你逐步详细解释一下? - MacDeveloper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接