从iOS UIAutomation发出JavaScript中的同步HTTP GET请求或调用shell脚本

从iOS UIAutomation发出JavaScript中的同步HTTP GET请求或调用shell脚本,第1张

概述我正在尝试使用Apple的UIAutomation为具有服务器端组件的iOS应用程序编写单元测试.为了在各种状态下设置测试服务器(以及模拟通过我的服务器进行通信的两个客户端),我想在基于 javascript的测试中发出HTTP get请求. 任何人都可以提供一个示例,说明如何直接从UIAutomation javascript测试中发出HTTP GET请求,或者如何从我的UIAutomation 我正在尝试使用Apple的UIautomation为具有服务器端组件的iOS应用程序编写单元测试.为了在各种状态下设置测试服务器(以及模拟通过我的服务器进行通信的两个客户端),我想在基于 javascript的测试中发出http get请求.

任何人都可以提供一个示例,说明如何直接从UIautomation JavaScript测试中发出http GET请求,或者如何从我的UIautomation JavaScript测试中调用shell脚本

FWIW,UIautomation运行时中缺少所有浏览器提供的大多数核心对象.例如,尝试使用XMLhttpRequest,您将收到一个异常报告,它无法找到该变量.

谢谢!

解决方法 伙计们,

我能够通过向iOS客户端发送http请求来处理并在UIAlertVIEw中返回结果来解决这个问题.请注意,所有iOS代码修改都包含在#if DEBUG条件编译指令中.

首先,设置您的客户端,以便在设备震动时发送通知. Read this post for more information.

接下来,在您的iOS主应用程序委托中添加以下代码:

[[NSNotificationCenter defaultCenter] addobserver:self                                         selector:@selector(deviceShakenShowDeBUG:)                                             name:@"DeviceShaken"                                            object:nil];

然后添加一个看起来像这样的方法:

- (voID) deviceShakenShowDeBUG:(ID)sender{    if (!self.textFIEldEnterDeBUGArgs)    {        self.textFIEldEnterDeBUGArgs = [[[UITextFIEld alloc] initWithFrame:CGRectMake(0,260.0,25.0)] autorelease];        self.textFIEldEnterDeBUGArgs.accessibilityLabel = @"AlertDeBUGArgsFIEld";        self.textFIEldEnterDeBUGArgs.isAccessibilityElement = YES;        [self.textFIEldEnterDeBUGArgs setBackgroundcolor:[UIcolor whitecolor]];        [self.tabbarController.selectedVIEwController.vIEw addSubvIEw:self.textFIEldEnterDeBUGArgs];        [self.tabbarController.selectedVIEwController.vIEw bringSubvIEwToFront:self.textFIEldEnterDeBUGArgs];    }    else    {        if ([self.textFIEldEnterDeBUGArgs.text length] > 0)        {            if ([self.textFIEldEnterDeBUGArgs.text hasPrefix:@"http://"])            {                [self doDeBUGhttpRequest:self.textFIEldEnterDeBUGArgs.text];                }        }    }}- (voID)requestDIDFinishLoad:(TTURLRequest*)request{        Nsstring *response = [[[Nsstring alloc] initWithData:((TTURLDataResponse*)request.response).data                                                     enCoding:NSUTF8StringEnCoding] autorelease];        UIAlertVIEw *resultAlert =             [[[UIAlertVIEw alloc] initWithTitle:NSLocalizedString(@"Request Loaded",@"")                                       message:response                                      delegate:nil                             cancelbuttonTitle:NSLocalizedString(@"OK",@"")                             otherbuttonTitles:nil] autorelease];        resultAlert.accessibilityLabel = @"AlertDeBUGResult";        [resultAlert show];}

此代码将在摇动后向顶部视图控制器添加UITextFIEld,在任何导航栏或其他UI元素上方拍打. UIautomation或您的用户可以手动在此UITextFIEld中输入URL.当您再次摇动设备时,如果文本以“http”开头,它将在代码中发出http请求(练习让读者实现doDeBUGhttpRequest).

然后,在我的UIautomation JavaScript文件中,我定义了以下两个函数:

function httpGet(url,delayInSec) {  if (!delayInSec) delay = 1;  var alertDeBUGResultSeen = false;  var httpResponseValue = null;  UIATarget.onAlert = function onAlert(alert) {        httpResponseValue = alert.staticTexts().toArray()[1].name();    alert.buttons()[0].tap();    alertDeBUGResultSeen = true;  }  var target = UIATarget.localTarget();  var application = target.frontMostApp();  target.shake(); // bring up the input fIEld  application.mainWindow().textFIElds()["AlertDeBUGArgsFIEld"].setValue(url);  target.shake(); // send back to be processed  target.delay(delayInSec);  assertTrue(alertDeBUGResultSeen);  return httpResponseValue;}function httpGetJsON(url,delayInSec) {  var response = httpGet(url,delayInSec);  return eval('(' + response + ')');}

现在,在我的JavaScript文件中,我可以打电话

httpGet('http://localhost:3000/do_something')

它将执行http请求.如果我想从服务器返回JsON数据,我打电话

var JsonResponse = httpGetJsON('http://localhost:3000/do_something')

如果我知道这将是一个长时间通话,我打电话

var JsonResponse = httpGetJsON('http://localhost:3000/do_something',10 /* timeout */)

我已经成功使用这种方法已有好几周了.

总结

以上是内存溢出为你收集整理的从iOS UIAutomation发出JavaScript中的同步HTTP GET请求或调用shell脚本全部内容,希望文章能够帮你解决从iOS UIAutomation发出JavaScript中的同步HTTP GET请求或调用shell脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存