1

语境

许多原生应用程序让用户使用 Facebook 进行身份验证,而不是使用他们自己的身份验证系统。这对我使用 Javascript 绑定编写 iOS UIAutomation 测试用例来说是个问题。从用户的角度来看,我们的场景通常看起来像这样。

设想

  1. 用户点击“连接到 Facebook”。
  2. (目标)应用程序移至后台,而 Safari 浏览器移至前台,因此用户可以使用 oAuth 进行身份验证。
  3. 用户输入他们的认证数据并提交。
  4. Safari 浏览器窗口移入后台,目标应用程序移回前台。

问题

在运行测试之前,Instruments让用户在顶部菜单栏中设置“目标应用程序”。当目标应用程序移动到后台而 Safari 应用程序移动到前台时(步骤 #2),使用Instruments中的自动化证明是有问题的。此时,仪器报告

目标应用程序似乎已经死亡

我认为这就像轮询/测试(或类似的)变化一样简单UIATarget.localTarget().frontMostApp(),但似乎并非如此——测试运行停止执行。

如何使用 Instruments 成功测试此场景? 这是 UIAutomation 的 Javascript 绑定的可测试场景吗?

4

1 回答 1

2

唉,这是不可能的。Instruments 失去了与应用程序的连接,因为应用程序在后台冻结并且无法继续。此外,无法将触摸事件发送到 Safari,因为 UI 自动化不适用于您自己构建的应用程序。

如果您使用的是预构建的 SDK,那么您就很不走运了。但是,如果您将自己的 Oauth 连接滚动到它们,您可以提供一个带有 web 视图的模态视图控制器,该控制器将转到 Facebook 的 Oauth 身份验证页面,而不是将用户一直踢到移动 Safari。

这样,应用程序永远不会退出。然后,您可以找出要发送到 web 视图的事件并尝试从那里进行测试。

于 2012-11-11T19:17:41.900 回答