小白学习instrument之UI Automation葡京网上娱乐场(1)

支付宝WAP网站版本的支出接口网上结缘的可比少,看到成千上万网站在卖,顿觉无语。

琢磨小白学习instrument之七天左右,计算在网上找了一部分零零散散和苹果官网给出的法定文档介绍,总括了一下自己的学习心得,分享一下吗。

紧倘若得温馨查看支付宝官方提供的SDK中的开发文档。

UI
Automation就是UI自动化的意味,这一个我们都应有通晓。既然是自动化工具,这必然必要有自动化的脚本去协理,而UI
Automation它所支撑的脚本语言除了自己原生的swift语言外,还接济JavaScript语言。

付出宝sdk下载地址:https://doc.open.alipay.com/doc2/detail?treeId=60&articleId=103564&docType=1

自己说一下自己先是次看到那几个工具的光景吧,自从xcode5版本起始(具体是5点几版本就不亮堂了),UI
Automation就帮忙录制用户操作,自动生成为脚本的功用。当初协调对app就实行部分操作,发现它自动就自动生成了一段脚本,感觉好神奇啊,但当自己想去解读脚本语言,发现自己根本对此(八窍通七窍,一窍不通),为了让自己看懂这个本子的意思和增长部分操作,就去上学JavaScript语言。学了两周左右年华后,基本的JavaScript语句会写了,也能几乎依照代码去打听其成效,然后又花了2天时间尤其去探听UI
Automation一些特定的操作,就入手写上自己的首个专业的UI
Automation脚本。

 

//声明变量,减少代码量
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();

//登录流程
app.tabBar().buttons()["我"].tap();
main.tableViews()[0].cells()[" "].tap();//点击默认头像区域


//因为app已经记住了用户名,这段代码屏蔽
//main.textFields()[0].textFields()[0].tap();
//var name = "skk"
//main.textFields()[0].textFields()[0].setValue(name);


main.secureTextFields()[0].secureTextFields()[0].tap();
//给密码声明变量,并赋予输入框变量的值
var passwd = "123456";
main.secureTextFields()[0].secureTextFields()[0].setValue(passwd);

main.buttons()["登录"].tap();
target.delay(1);//延迟1秒后操作
app.tabBar().buttons()["首页"].tap();
target.delay(5);//延迟5秒后操作
//登录完成

//退出登录流程
app.tabBar().buttons()["我"].tap();
main.tableViews()[0].tapWithOptions({tapOffset:{x:0.60, y:0.85}});//点击【设置】
main.buttons()["退出登录"].tap();
app.actionSheet().collectionViews()[0].cells()["退出"].buttons()["退出"].tap();
app.tabBar().buttons()["首页"].tap();
//退出登录成功
UIALogger.logMessage("登录脚本都运行通过");
//脚本运行完成,输入该内容

(即使运用md5签约方式就不必要安顿密钥文件了)

本条是大家公司一个成品的登录流程,写的比较不难,没有特意去优化它。

1.
要使用支付宝手机网站开发接口,除了要配备基本的帐号外,还必须配备openssl密钥文件(参考
http://blog.csdn.net/fenglibing/article/details/8610280
那篇应该够了)。关于key的更动,不可不看文档,在此不详述。文档上演示的在线上传key的界面地址为:https://mobiless.alipay.com/home/index.htm
,key一定要设有,而且地址要正确,不然支付宝那边不可能再次来到有效的界面

​就犹如标题一样,我就是小白,要我这么些小白去协调独立去写出那段脚本,这是不能的,脚本的有所的操作都是录制得到的,我只是把录制得到的台本进行部分优化而已。

2.以独立的支出接口方式提供,便于用户按照自己的必要再做定制;

上面说有的干货吧,先说一下​UI
Automation的结构吧,拿一段脚本代码来说说自己的看法吧,官网给出控件树图没有实时更新与实际操作上会有点距离,大家领略一个大体意思即可。推荐一本书《ios测试指南》其一本的第56页有对那几个控件数的社团有很详细的诠释。

3.
附件提供的代码是概括的集成,仅起一个示范功能,没有设想代码的复用性之类

UI
Automation所有的操作事件都无法不以UIATargt先导,如图所示UIATargt是一切控件树的根节点​​​;
UIATarget.localTarget().frontMostApp();应用程序是最前头的应用程序(或应用程序的对象),也就是指那么些app。
UIATarget.localTarget().frontMostApp().mainWindow();到达你的应用程序的主窗口中,也就是指那个被测app上边的主窗口。

 

注:

葡京网上娱乐场 1

[2015-09-27] v1.3 更新到了2015-06-04流行的付出宝wap接口。

[
](javascript:;)苹果官方给出的控件树图

[2016-11-15] v1.5立异,将alipay
进行NS化改写,从1.3时,其实我参加了md5签名格局的支撑,防止了累赘的openssl相关配置,当然所谓安全性要有些差一点;1.5版可以在后台拔取用哪类签有名的模特式。

列举部分比较常用的操作代码
要点击三遍相同的地方,你可以利用此代码:
​示例,点击两次100、200坐标置
UIATarget.localTarget().doubleTap({X:100,Y:200});

v1.5下载:alipay_wap.zip 
 (直接解压到includes/modules/payment/目录下)

测试点击图片放大和裁减成效
UIATarget.localTarget().twoFingerTap({X:100,Y:200});

[2016-11-18] 刚才再也下载了一份支付宝的wap
sdk,是16年三月份翻新的,发现其加入了md5的签名格局,没有何样值得升级的

拓宽和紧缩手势,你提供的坐标的伊始地方和竣事地方,以及持续时间,以秒为单位。​
下边的示范指定地方,从20、200的地点放大与裁减手势,经过2秒:
UIATarget.localTarget().pinchOpenFromToForDuration({X:20,Y:200},{X:300,Y:200},2);​
UIATarget.localTarget().pinchCloseFromToForDuration({X:20,Y:200},{X:300,Y:200},2);

 

拖动和轻弹。即使您须求滚动表或位移元素在屏幕上,你可以拔取dragFromToForDuration方法。你提供的坐标的前奏地方和了结地方,以及持续时间,以秒为单位。​​

测了一下,适用ECShop 3.0

上边的言传身教指定地方,从160、200的任务拖入手势到160、400的职分,过了一段1秒:
UIATarget.localTarget().dragFromToForDuration({X:60,Y:200},{X:160,Y:400},1);

葡京网上娱乐场 2

以此与拖下手势是形似的,但它被设定为一个快捷动作,因而它不须求一个持续时间参数。
UIATarget.localTarget().flickFromTo({X:160,Y:200},{X:160,Y:400});

 

输入文字:您的台本可能要求测试你的应用程序正确地拍卖文件输入。要水到渠成那或多或少,就足以由此简单地指定目的文本字段并用其值设置输入文本的文书字段的setValue方法。
上面的示范使用一个有些变量,以提供一个长字符串作为测试用例的率先个文本字段(索引[0])在近来屏幕:var
recipeName = ” “;​
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);

操作延时,单位为秒UIATarget.localTarget().delay(2);

timeout:重临当前的超时值,应用如下
UIATarget.localTarget().timeout();

setTimeout:设置一个新的超时值,应用如下
UIATarget.localTarget().setTimeout();

push提姆eout:保存在堆栈的脚下超时值,并安装一个新的超时值,应用如下
UIATarget.localTarget().pushTimeout();

pop提姆eout:从仓库检索在此以前的超时值,复苏其用作当下的超时值,并将其回到,应用如下UIATarget.localTarget().pop提姆eout();

打印日志,与document.write()一样,只是那个是打印在ui
autoaction工具内UIALogger.logMessage(“须求打印出的音讯”);​//这么些可以用来进行判定

模拟app再次回到桌面,并且从后台再一次进入app,其中的操作间隔以秒为单位​//下边示例再次来到桌面,并且10秒后进入ios后台,重临app内​
UIATarget.localTarget().deactivateAppForDuration(10);


那有个简易的言传身教,感兴趣的去去看看:
http://www.minroad.com/?p=799