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

Posted

技术标签:

【中文标题】iOS - 带有重置应用程序的 UI 自动化多个脚本【英文标题】:iOS - UI Automation multiple scripts with reset application 【发布时间】:2015-06-30 14:10:16 【问题描述】:

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

我发现我可以创建一个脚本文件并使用#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 

【问题讨论】:

您应该将奖励问题拆分为自己的问题。 【参考方案1】:

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

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

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

【讨论】:

感谢您的回答。我正在寻找只需要在 javascript 文件中添加几行代码的解决方案,仅此而已。我想这是不可能的。感谢您的“黑客”,但我认为,就我的目的而言,最好每个脚本在完成应测试的内容后返回主页。 这是一个很好的策略,但是如果任何一个脚本失败了,你编写的所有后续操作也会失败。 是的,这就是我考虑“重置”应用程序的原因。也许你的一些手势解决方案可能是正确的。 由于您可以从命令行运行仪器,您应该能够编写一个脚本,在他们自己的仪器实例中一次启动每个测试。这将重新启动应用程序,但如果您有状态恢复,您可能需要做额外的工作才能回到应用程序的开头【参考方案2】:

我可能为时已晚,但完全有可能完成您想要的。基本上,创建一个 bash 脚本(或任何其他脚本)并包含运行两个自动化脚本的命令:

#!/bin/bash instruments -w <UDID> -t <template> <app> -e UIASCRIPT <script1> instruments -w <UDID> -t <template> <app> -e UIASCRIPT <script2>

运行它,您的应用将在第一个脚本每次运行创建跟踪文件后重新启动。

【讨论】:

不,你发这么晚没问题。看起来它可以工作。就在几天前,我发现 UI 自动化已被弃用,Apple 使用 Xcode 7 提供了测试 UI 的新方法。 @LiborZapletal 未被弃用。它仍然适用于 Xcode 7,但他们还添加了一个使用 XCTest(ObjC 和/或 Swift)的新 UI 测试。 根据 Apple 的说法,UIAutomation 将在 XCTest 结束测试版一年后被弃用。 @Ian 写在哪里?我找不到任何相关的信息。可以发一下链接吗? 我的同事在 WWDC 上宣布了这一点。这可能在他们的一个视频中。

以上是关于iOS - 带有重置应用程序的 UI 自动化多个脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用元素 ui 的带有 css 的页脚按钮组

如何为 iOS 应用动态设计或创建带有动态 ui 控件的视图

重置 iOS 模拟器内容并添加照片

带有圆形中心按钮的页脚 UI

使用带有多个输入字段的 jquery-ui 自动完成

iOS:应用内购买管理多个自动更新订阅,带有升级和降级选项