iOS - UI 自动化多个脚本与重置应用程序

标签 ios xcode xcode6 ios-ui-automation xcode-instruments

我正在寻找可以按顺序设置 JavaScript 的解决方案,并且当每个脚本启动时它将独立于以前的脚本。所以我可以只运行一个脚本或一组脚本,并且它的工作原理是一样的。

我发现我可以创建一个脚本文件并使用 #import 关键字,如下所示:

#import "AddStaticContentMissingName.js"
#import "AddStaticContent.js"

它正在工作,两个脚本都在运行,但第二个脚本在第一个脚本结束的地方开始,这就是困扰我的地方。我可以在第二个需要时将第一个设置为结束,但我不喜欢它。我只是编写一个脚本来执行应该测试的操作,然后结束。那么是否有可能在每次测试之前重新启动应用程序或类似的东西?我想让 UI 测试尽可能自动化,那么你用什么?或者您是否使用 UI 自动化之外的其他工具?

额外问题:我正在寻找如何从命令行和/或使用 Xcode Server 运行它的解决方案。我猜 Xcode Server 有问题,但对于命令行有一个解决方案。我发现解决方案的问题是我不可移植,对吧?我没有任何办法如何将一些脚本添加到我的存储库中,如果有人尝试使用它,路径就会出现问题。我发现的命令示例:

instruments \
-w your_ios_udid \
-t "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate" \
name_of_your_app \
-e UIASCRIPT absolute_path_to_the_test_file 

最佳答案

如果您想在脚本之间重置应用程序,您需要结合应用程序代码和 UIAutomation 代码自行完成。 (Apple 将用效果更好的东西取代 Instruments,但目前这是唯一的方法。)

例如,如果您的应用程序不使用“摇动”手势进行任何操作,您可以使用它来触发应用程序内的重新启动(不是关闭它,只是将其返回到已知状态)。然后在每个 UIAutomation 脚本的顶部,您可以只 call the method for the shake gesture .

testing framework we wrote ,我们自己设置RPC channel允许我们向自动化脚本公开非 UI 功能(例如重置应用程序)。只要您能够可靠地将应用程序置于已知状态,使用什么系统来实现这一点并不重要。

关于iOS - UI 自动化多个脚本与重置应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140656/

相关文章:

iphone - iPhone 旋转单元测试

xcode - Xcode OSX 的向后兼容性

ios - 更改搜索栏中的字段背景

ios - 为什么 NSFormatter dateFromString 偶尔会返回 nil?

ios - SpriteKit 游戏物理滞后

ios - 如何在 SwiftUI 中与 GeometryReader 正确对齐

ios - 将 Swift 数组以外的其他内容用于传递给 OpenGL 缓冲区的可变固定大小线程安全数据

ios8 - Xcode 6.01 和 iOS 8 无法获取位置更新

ios - 如何在 iOS 中搜索 tableview 内容?

ios - statusBarOrientation 返回(枚举值)