Xcode 7 UITesting 用于 OS X 上的菜单栏应用程序
Posted
技术标签:
【中文标题】Xcode 7 UITesting 用于 OS X 上的菜单栏应用程序【英文标题】:Xcode 7 UITesting for menu bar apps on OS X 【发布时间】:2015-08-28 15:01:22 【问题描述】:我正在尝试将 XCode 7 UITesting 用于 Dropbox 等菜单栏应用程序,Mac OS X 上的 1Password。这是否可以使用 Xcode 7 提供的最新功能自动化 UI 测试?我了解 UI 测试适用于 ios 应用程序,但演示从未在视频中显示它是否适用于操作系统应用程序。如果它适用于 OS X 应用程序,但它适用于菜单栏应用程序吗?请指导我解决这个问题。
【问题讨论】:
我遇到了同样的问题。您可以 UI 测试 OSX 应用程序,但如果您在Info.plists
上启用“应用程序是代理 (UIElement)”选项,则 XCUIApplication().launch()
将停止工作。有什么想法吗?
【参考方案1】:
受此答案的启发,我找到了解决此问题的更好方法:https://***.com/a/5384319/96737
与其从 Info.plist 中删除 Dock 功能,不如以编程方式将应用程序的“激活策略”设置为“附件”。
通过 Xcode 8.1 在 swift3 中:
func applicationDidFinishLaunching(_ aNotification: Notification)
NSApp.setActivationPolicy(NSApplicationActivationPolicy.accessory)
最大的好处是它无需修改即可在运行时和 UI 测试中工作。您无需根据是否在 UI 测试中运行应用程序来激活或停用激活策略。
它只是工作。
【讨论】:
【参考方案2】:我意识到这个问题很老了,但想分享我的答案。
我创建了一个 Info.plist 文件的副本,其中 LSUIElement
设置为 NO
。然后我创建了一个新的“UITesting”配置并将其INFOPLIST_FILE
构建设置指向副本。更好的选择是创建用户定义的构建设置,然后将该设置的值分配给 LSUIElement
,但 Xcode 不允许使用布尔值。
设置好 UITesting 配置后,您可以编辑方案以在测试期间使用此配置。
【讨论】:
有点混乱。你能分步详细说明吗以上是关于Xcode 7 UITesting 用于 OS X 上的菜单栏应用程序的主要内容,如果未能解决你的问题,请参考以下文章
入口点 (_main) 未定义。对于架构 x86_64 - 仅 XCode UITesting
如何从 Mac OS X 10.7.3 卸载 XCode 4.3.1?
Xcode Bots 从单个 Xcode 服务器在多个 iOS 项目上运行 UITesting