使用仪器从 iOS 个自动化测试文件进行异步调用

Asynchrounous call from iOS automation test file using instruments

我正在使用 iOS 提供的仪器应用程序来实现本机 iOS 应用程序的自动化。测试脚本写在一个js文件中,所以我在想是否可以通过这个测试脚本进行AJAX调用。基本上我想在测试中继续轮询来自 URL 调用的一些数据。

我只想做这样的事情:

try{
    var pinger = new new XMLHttpRequest();
    pinger.open("POST", "http://localhost/someurl/getData_ping"), true);
    pinger.send();
}catch(e){
    //returns null
}

然后我可以检查响应并执行所需的任何操作。但每次它只是进入 catch 块并将错误给出为 null。

有什么方法可以通过充当测试脚本的js文件来完成吗?还有关于这个 js 文件在哪里执行或者它支持什么的任何信息,因为我找不到任何这样的文档。

问得好,如果您要使用的 class 不在此处

https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/_index.html

或 ECMA 规范的一部分,那么您将无法使用它。因此,您没有任何常见的文档对象模型或浏览器对象模型 class,例如 DocumentXMLHTTPRequest。您想要使用的任何库都不能依赖于这些对象中的任何一个,不幸的是,这消除了大多数常见的 JS 库。我能够找到一个 XML 设法避免这种情况的解析库,这对我很有帮助 https://code.google.com/p/marknote/

至于尝试在测试中创建 post,我认为您唯一的选择是使用 UIAHost.performTaskWithPathArgumentsTimeout (see here) 调用 curl 或 python 脚本或将需要的参数作为参数的东西 post。此方法 returns 如果您还需要执行 get 调用的输出。

至于你的 null 错误,有点奇怪,虽然我以前遇到过 null 或 undefined 错误(我认为这永远不会发生)。我注意到你有两次 new 这个词,也许如果你去掉其中一个,你会得到一个 XMLHttpRequest variable not found 或类似的东西。希望这会有所帮助。