Xcode 7 UITesting在OS X上的菜单栏应用程序
问题描述:
我想在Mac OS X上使用Xcode 7 UITesting为像Dropbox,1Password这样的Menubar应用程序。这可能使用Xcode提供的最新功能自动执行UI测试7?我了解UI测试适用于iOS应用程序,但演示从不会显示它是否在视频中运行OS应用程序。如果它适用于OS X应用程序,但它是否适用于菜单栏应用程序?请指导我解决这个问题。Xcode 7 UITesting在OS X上的菜单栏应用程序
答
我意识到这个问题很旧,但想分享我的答案。
我创建了Info.plist文件w/LSUIElement
的副本,设置为NO
。然后我创建了一个新的“UITesting”配置,并将它的INFOPLIST_FILE
构建设置指向重复。更好的选择是创建用户定义的构建设置,然后将该设置的值分配给LSUIElement
,但Xcode不允许它具有布尔值。
一旦您设置了UITesting配置,您可以编辑您的方案以在测试期间使用此配置。
答
我找到了一个更好的解决这个问题,这个答案动机:https://stackoverflow.com/a/5384319/96737
从Info.plist中取出码头能力相反,它是更好地设置应用程序的“激活策略”为“附件”程序。
在swift3通过的Xcode 8.1:
func applicationDidFinishLaunching(_ aNotification: Notification) {
NSApp.setActivationPolicy(NSApplicationActivationPolicy.accessory)
}
最大的好处是,它在运行时,并在不修改UI测试。您无需激活或取消激活激活策略,具体取决于您是否在UI测试中运行应用程序。
它只是工作。
我有这个完全相同的问题。您可以使用UI测试OSX应用程序,但是如果您在Info.plists上启用了“Application is agent(UIElement)”选项,则“XCUIApplication()。launch()”停止工作。有任何想法吗? – Gaston