从 Instruments Javascript 代码访问本机 IOS 函数

Posted

技术标签:

【中文标题】从 Instruments Javascript 代码访问本机 IOS 函数【英文标题】:Accessing native IOS functions from Instruments Javascript code 【发布时间】:2013-09-02 06:43:11 【问题描述】:

有人可以帮我解决这个问题吗?

我有一个访问通讯录的 Objective C 应用程序;建立用户名、电子邮件 ID 和他们的照片的列表;使用列表将其显示在屏幕上。

我想使用 Instruments 自动测试此功能。我想从屏幕上的 Tableview 中检索用户列表。这行得通。从这个列表中,我还获得了电子邮件 ID 和图片。我现在要做的是能够获取此联系人数据并根据联系人簿对其进行验证。但是,我看不到如何从 javascript 调用 Objective C 函数。

提前致谢。

【问题讨论】:

【参考方案1】:

有多种方法可以做到这一点,尽管我们正在努力确定最好的一种。候选人:

您从 UIAutomation 插入的准隐藏文本字段,您的应用程序从中读取、执行操作,然后写回(或写入其他字段)。缺点是 UIA 似乎试图对隐藏的文本字段变得聪明。但我确信有办法让它变得不那么聪明。 在主机上运行并与应用程序上的侦听器通信以交换数据的网络服务器。设置痛苦,但保证工作。我们已经有了这个频道,因为我们在开发过程中使用 Nimbus 和 CSS/XML 以及运行时更新,所以它比大多数人更容易。

【讨论】:

【参考方案2】:

无法从 UI 自动化中的 JavaScript 调用 Objective-C 函数。该 JavaScript 运行时完全是沙盒化的。与应用程序通信的唯一方法是通过 UIAElement 脚本接口。

如果您正在寻找可以调用任意 Objective-C 对象的测试工具,您可能需要查看KIF。它在您的应用程序内部运行,并且是用 Objective-C 编写的。

【讨论】:

谢谢乔纳森。我对沙盒架构也有同样的想法,但希望(反对希望!)该架构类似于 android 上的 Robotium,它允许您从 Robotium 自动化代码中调用本机 Android Java 函数。我将与我的团队核实我们是否可以使用 KIF - 如果它不需要以任何方式修改 AppUnderTest,这可能是一种可能性。谢谢

以上是关于从 Instruments Javascript 代码访问本机 IOS 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Apple Instruments 中启用 Javascript 语法检查

在 Xcode UIAutomation 和 Instruments 中使用 Javascript 验证按钮对象的存在

使用 Instruments.app 从终端进行 Mac、iOS 自动化测试

XCode Instruments 不收集任何数据

从 Instruments 中识别 malloc 的对象

iOS:以 txt 格式从 Instruments 获取日志