即使在应用退出后,如何使用 UIAutomation 工具继续测试 iOS 应用?

Posted

技术标签:

【中文标题】即使在应用退出后,如何使用 UIAutomation 工具继续测试 iOS 应用?【英文标题】:How to continue testing an iOS app, using UIAutomation instrument, even after the app exits? 【发布时间】:2012-05-04 18:28:37 【问题描述】:

我有一个应用程序。应用程序中有一个按钮,如果单击该按钮,将退出应用程序。我正在使用 UIAutomation 工具测试应用程序。我想测试这个按钮。但是在应用程序退出后,仪器停止给出异常。我想做的是在应用程序存在后,我想重新打开应用程序并继续进行其余的测试。有没有其他人遇到过同样的情况?如果是这样,如果您找到了,请分享解决方案吗?

【问题讨论】:

仅供参考 - 苹果不喜欢你有一个按钮存在应用程序。您是为应用商店构建的吗? 是的,它已经在应用商店上架了。它是一个信使,有这个按钮可以重置应用程序。(它会删除登录信息)因此,应用程序退出。所以从技术上讲,它不是退出应用程序的按钮。 【参考方案1】:

这是不可能的,因为 Instruments 退出后会失去与应用进程的连接。

如果您从命令行编写 UI 自动化脚本,您可以在第一个自动化脚本退出应用程序后运行第二个自动化脚本,然后检查以确保一切都已重置。

instruments \
    -D [trace document] \
    -t [instruments template] \
    /path/to/Bundle.app \
    -e UIARESULTSPATH [directory to store test output] \
    -e UIASCRIPT reset_the_app.js

instruments \
    -D [trace document] \
    -t [instruments template] \
    /path/to/Bundle.app \
    -e UIARESULTSPATH [directory to store test output] \
    -e UIASCRIPT check_that_the_app_is_reset.js

因此,与其尝试让同一个 Instruments 实例重新启动并重新附加到应用程序,只需运行两个单独的脚本,一个用于执行重置和中止,另一个用于检查应用程序的结果状态.

【讨论】:

感谢您的回复。我也在想这不能使用 UIAutomation 本身来完成。【参考方案2】:

你可以使用:

UIATarget.localTarget().deactivateAppForDuration(n); 

其中 n 是您希望此应用重新启动的秒数。我希望这有帮助。

【讨论】:

停用应用程序绝不是重新启动。有关更多信息,请参阅developer.apple.com/library/ios/documentation/iPhone/Conceptual/… 之类的文档。【参考方案3】:

感谢您的回答,但文档说:

“当用户通过点击 Home 按钮或使其他应用程序进入前台退出您的应用程序时,您的应用程序将暂停。”

所以它不是重新启动而是暂停?

【讨论】:

是的,它只是暂停应用程序提到的时间(以秒为单位)并且它没有重新启动。

以上是关于即使在应用退出后,如何使用 UIAutomation 工具继续测试 iOS 应用?的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试使用 Framework-7 Vuejs 创建一个应用程序。即使在使用 Firebase 退出应用程序后,我也想让我的用户保持登录状态

即使在使用异步任务后,当我尝试传递第二个意图时,我的应用程序也会退出并显示错误消息

退出iOS App后如何回到同一屏幕/页面?

如何阻止控制台在退出时关闭? [复制]

即使所有退出事件成功触发,Electron 应用程序也会挂起

Firebase:即使应用退出,也要监听 ChildEventListener