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

Asynchrounous call from iOS automation test file using instruments

本文关键字:异步 调用 文件 自动化测试 仪器 iOS      更新时间:2023-12-24

我正在使用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文件在哪里执行或它支持什么的信息,因为我找不到任何这样的文档。

好问题,如果您尝试使用的类不在中

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

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

至于尝试在测试中发帖,我认为你唯一的选择是使用UIAHost.performTaskWithPathArgumentsTimeout(请参阅此处)调用curl或python脚本或将需要发布的内容作为参数的东西。如果您还需要执行get,此方法将返回调用的输出。

至于你的null错误,这有点奇怪,尽管我以前也遇到过null或未定义的错误(在我看来,这不应该发生)。我注意到你有两次new这个词,也许如果你去掉其中一个,你会得到一个XMLHttpRequest变量找不到或类似的东西。希望这能有所帮助。