5

为了找到 UI 自动化问题的解决方案,我进行了很多谷歌搜索。我发现一篇很好地总结了这些问题的帖子:

无法从命令行运行测试。(...)

无法设置或重置状态。(...)

前一个问题的一部分是 UI 自动化没有离散测试的概念。(...)

无法以编程方式检索测试运行的结果。(...)

来源:https ://content.pivotal.io/blog/iphone-ui-automation-tests-a-decent-start

问题编号 3 可以用茉莉花解决(https://github.com/pivotal/jasmine-iphone

其他问题呢?自该帖子(2010 年 7 月 20 日)以来是否有任何改进?

还有一个问题:选择特定 UI 元素的唯一现有方法是否真的是在应用程序源代码中添加可访问性标签?

4

4 回答 4

5

虽然自那篇文章发布以来 UI 自动化有所改进,但我所看到的改进都与可靠性有关,而不是新功能。

他提出了一些关于使用 UI 自动化进行更严重测试的问题的好观点。如果您稍后阅读评论,将会有大量关于解决这些问题的方法的讨论。

这个问题讨论了从命令行运行测试的主题,Apple Developer Forums中暗示了一个潜在的解决方案。我自己没有试过这个。

您可以在测试运行后导出测试结果,以便离线解析。

最后,关于您的最后一个问题,您可以解决 UI 元素,而无需为其分配可访问性标签。默认情况下可以访问许多常见的 UIKit 控件,因此您已经可以通过名称来定位它们。否则,您可以从显示层次结构中的位置选择视图,如下例所示:

var tableView = mainWindow.tableViews()[0];

与往常一样,如果 UI 自动化工具缺少对您很重要的东西,请提交增强请求,以便它可能会进入下一个 SDK 版本。

于 2011-01-24T23:37:36.900 回答
3

你试过IMAT吗?https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu 。它使用 Apple 提供的原生 javascript sdk,可以通过命令行或 Instruments 触发。

回答您的每个问题:

无法从命令行运行测试。(...)

苹果现在提供了这个。使用 IMAT,您可以通过命令行或 Instruments 启动测试。在 Apple 提供命令行界面之前,我们使用 AppleScript 来启动 Instruments,然后开始测试 - 讨厌。

无法设置或重置状态。(...)

查看此状态图:https ://code.intuit.com/sf/wiki/do/viewPage/projects.ginsu/wiki/RecoveringFromTestFailures

前一个问题的一部分是 UI 自动化没有离散测试的概念。(...)

同意。IMAT 和 tuneup.js (https://github.com/alexvollmer/tuneup_js#readme) 都允许这样做。

无法以编程方式检索测试运行的结果。(...)

读取尾随 plist 文件并非易事。IMAT 通过读取 plist 文件在测试运行后提供类似 jUnit 的报告,这由我的 CI 工具(Teamcity、Jenkins、CruiseControl)获取

于 2012-08-01T17:50:41.883 回答
0

尝试检查元素层次结构,表格可以放在 UIScrollView 上。

var tableV = mainWindowTarget.scrollViews()[0].tableViews()[0].scrollToElementWithName("Name of element inside the cell");

即使元素在第 12 个单元格中,上述脚本也可以工作(但名称应与单元格内提到的名称完全相同)

于 2011-07-14T09:11:44.427 回答
0

查看http://lemonjar.com/blog/?p=69 它讨论了如何从命令行运行 UIA

于 2011-08-08T23:48:54.737 回答