iOS 的 Javascript UIAutomation 如何用于导航原生应用的 oAuth 流程?

Posted

技术标签:

【中文标题】iOS 的 Javascript UIAutomation 如何用于导航原生应用的 oAuth 流程?【英文标题】:How can iOS's Javascript UIAutomation be used to navigate a native app's oAuth process? 【发布时间】:2012-11-11 06:15:32 【问题描述】:

上下文

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

场景

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

问题

在运行测试之前,Instruments 让用户在顶部菜单栏中设置“目标应用”。 当目标应用程序移入后台而 Safari 应用程序移入前台(步骤 #2)时,在 Instruments 中使用 Automation 会出现问题。此时,仪器报告

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

有趣,感谢您的完整回答。我正在使用Facebook iOS SDK,它提供了两种选择,让用户使用 Safari 或 Facebook iOS 应用程序进行 oAuth。这意味着无法进行涉及 Facebook iOS SDK 的 UIAutomation 测试。

以上是关于iOS 的 Javascript UIAutomation 如何用于导航原生应用的 oAuth 流程?的主要内容,如果未能解决你的问题,请参考以下文章

iOS/Javascript - 如何使用 Javascript 访问设备上的图像

从本机iOS调用javascript函数

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

text [ios支持触摸重点] javascript解决方案#ios #web #javascript

IOS Object和javaScript相互调用

IOS:Safari不兼容Javascript中的Date问题