【问题标题】:how can I improve iPhone UI Automation?如何改进 iPhone UI 自动化?
【发布时间】:2011-06-14 14:05:45
【问题描述】:

为了找到 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 元素的唯一现有方法是否真的是在应用程序源代码中添加可访问性标签?

【问题讨论】:

    标签: iphone ios user-interface ui-automation ios-ui-automation


    【解决方案1】:

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

    回答您的每个问题:

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

    Apple 现在提供此功能。使用 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)获取

    【讨论】:

    • 我的 githhub 页面上仍有指向此链接的链接。 github.com/rdpfeffer/IMAT
    • 顺便说一句,如果您能在这里接受其中一个答案,那就太好了;-) @sogwiz 似乎已经回答了您的所有问题。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 欢迎来到 Stack Overflow!虽然这在理论上可以回答问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
      • 同意凯夫。不过好消息是新的 sdk 终于有了 cmd 支持。谢谢你的好消息!
      【解决方案4】:

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

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

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

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

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

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

      与往常一样,如果 UI 自动化工具中缺少对您很重要的内容,请联系file an enhancement request,以便它可以在 SDK 的下一版本中找到。

      【讨论】:

      • 非常感谢您的详细解答。我稍后会阅读您提到的页面,但快速浏览后我认为它们可以帮助我。关于“严肃测试”——这是我的情况,因为我将把这个过程与我的 CI 服务器集成。
      • 抱歉,在 CI 中集成 Instruments 会很痛苦。目前我正在使用 Sikuli (sikuli.org) 来解决您指出的问题,但我仍然不会将其放入 CI 中。对于 CI,我会使用这种方法 cocoawithlove.com/2009/12/…
      • yoosiba:您真的更喜欢使用像 Sikuli 这样的通用方法吗?在为 UIAutomation 和 Sikuli 编写标准 gui 测试用例时,您如何比较所花费的时间?
      • [无耻插件] 如果您正在寻找旨在作为 CI 的一部分运行的东西,请查看我的开源 Frank 项目 - vimeo.com/21860134
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 2012-06-17
      • 2010-09-12
      相关资源
      最近更新 更多