一、一些注意事项:

1.做自动化测试时注意如果是真机话首先要设置不锁屏。

2.自动化测试过程中如果程序后台或崩溃了。脚本运行将会暂停,直到程序再次回到前台。

3.必须明确指定关闭自动测试,测试完成或中断都不会自动关闭测试。

4.测试也是根据视图树的元素位置获取元素进行测试,根视图元素是UIATarget。

二、部分功能说明:

1.获取当前程序(在激活状态):

  1. UIATarget.localTarget().frontMostApp();

2.获取目标程序的主Window:

  1. UIATarget.localTarget().frontMostApp().mainWindow();

3.获取一个cell中的文本元素:

  1. UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];

4.触发一个导航栏中“Add”按钮点击:

  1. UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();

5.触发点击屏幕上的某个位置:

  1. UIATarget.localTarget().doubleTap({x:100, y:200});
  2.  
  3. UIATarget.localTarget().twoFingerTap({x:100, y:200});

6.获取tabBar并点击:

  1. appWindow.tabBar().buttons()["Unit Conversion"].tap();

7.放大:

  1. UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);

缩小(后面是个时间参数,表示持续时间):

  1. UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);

8.拖拽和快速滑动:

  1. UIATarget.localTarget().dragFromToForDuration({x:160, y:200}, {x:160, y:400}, 1);
  2.  
  3. UIATarget.localTarget().flickFromTo({x:160, y:200}, {x:160, y:400});

9.为文本框输入内容:

  1. var recipeName = "Unusually Long Name for a Recipe";
  2. UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);

10.在tabBar中导航

  1. var tabBar = UIATarget.localTarget().frontMostApp().mainWindow().tabBar();
  2.  
  3. var selectedTabName = tabBar.selectedButton().name();
  4.  
  5. if (selectedTabName != "Unit Conversion") {
  6.  
  7. tabBar.buttons()["Unit Conversion"].tap();
  8.  
  9. }

11.tableview滚动到一个name以“Turtle Pie.”开头的元素:

根据name模糊查询控件,firstWithPredicate(“name beginswith ‘xxx’”),根据name完全匹配,firstWithName(“xxxx”),/根据key值匹配,firstWithValueForKey(value,key):

  1. UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith ‘Turtle Pie’");

不使用预测功能:scrollToElementWithName和scrollToElementWithValueForKey

12.增加时间控制:

  1. //压栈时间片:
  2.  
  3. UIATarget.localTarget().pushTimeout(2);
  4.  
  5. //接着执行脚本任务;
  6.  
  7. //时间片出栈
  8.  
  9. UIATarget.localTarget().popTimeout();

还有一种方式,采用delay方式:

  1. UIATarget.localTarget().delay(2);

两种方式的区别是,在时间片内,第一种方法会不断尝试去执行压栈和出栈间的脚本任务,一旦可以执行就执行,不一定在时间片后才执行,而第二种方式是在时间片到后才执行脚本任务。

13.按钮点击:

  1. UIATarget.localTarget().frontMostApp().mainWindow().buttons()["xxxxx"].tap();

14截屏功能,事实证明模拟器是能使用截屏功能的:

  1. UIATarget.localTarget().captureScreenWithName("SS001-2_AddedIngredient");

15.验证结果:

  1. var cell = UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells().firstWithPredicate("name beginswith ‘Tarte’");
  2.  
  3. if (cell.isValid()) {
  4.  
  5. UIALogger.logPass(testName);
  6.  
  7. }
  8.  
  9. else {
  10.  
  11. UIALogger.logFail(testName);
  12.  
  13. }

16.处理弹框,只需指定UIATarget.onAlert:

  1. UIATarget.onAlert = function onAlert(alert) {
  2.  
  3. var title = alert.name();
  4.  
  5. UIALogger.logWarning("Alert with title '" + title + "' encountered.");
  6.  
  7. if (title == "The Alert We Expected") {
  8.  
  9. alert.buttons()["Continue"].tap();
  10.  
  11. return true; //alert handled, so bypass the default handler
  12.  
  13. }
  14.  
  15. // return false to use the default handler
  16.  
  17. return false;
  18.  
  19. }

返回FALSE代表点击取消,TRUE代表确定。

17.模拟后台一段时间:

  1. UIATarget.localTarget().deactivateAppForDuration(10);

手机方向旋转:

  1. UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);

18.拖动


  1. window.tableViews()[0].scrollDown();
  2.  
  3. window.tableViews()[0].scrollUp();
  4.  
  5. window.tableViews()[0].scrollLeft();
  6.  
  7. window.tableViews()[0].scrollRight();

19.打印当前屏幕所有空间信息

  1. UIATarget.localTarget().logElementTree();

20.记录日志


  1. UIALogger.logStart(“start”);
  2.  
  3. UIALogger.logPass(“pass”);
  4.  
  5. UIALogger.logWarning(“warning”);
  6.  
  7. UIALogger.logFail(“fail”);
  8.  
  9. UIALogger.logMessage(“message”);
  10.  
  11. UIALogger.logError(“error”);
  12.  
  13. UIALogger.logDebug(“debug”);
  14.  
  15. UIALogger.logIssue(“issue”);

21.九宫格搜索输入框


  1. UIATarget.localTarget().frontMostApp().mainWindow().searchBars()[0]

22.模拟键盘操作,

  1. UIATarget.localTarget().frontMostApp().keyboard().typeString(“aaa\n”);\n=回车

23.输入框输入,

  1. UIATarget.localTarget().frontMostApp().mainWindow().tableViews()["Empty list"].cells()["用户名:"].textFields()[0].setValue(“abcd”);

24.获取对象数组长度,

  1. UIATarget.localTarget().frontMostApp().mainWindow().buttons().length;

25.获取文本字符串,

  1. UIATarget.localTarget().frontMostApp().mainWindow().scrollViews()[0].staticTexts()[0].value();

26.打印当前元素的视图树:

  1. .logElementTree();

27.筛选框滚动,

  1. UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0].wheels()[0].dragInsideWithOptions({startOffset:{x:0.38, y:0.66}, endOffset:{x:0.38, y:0.12}, duration:1.6});

ios UI自动化测试学习笔记的更多相关文章

  1. UI设计学习笔记(7-12)

    UI学习笔记(7)--扁平化图标 认识扁平化 Flat Design 抛弃传统的渐变.阴影.高光等拟真视觉效果,打造看上去更平的界面.(颜色.形状) 扁平化图标有什么优缺点 优点: 简约不简单.有新鲜 ...

  2. IOS内存管理学习笔记

    内存管理作为iOS中非常重要的部分,每一个iOS开发者都应该深入了解iOS内存管理,最近在学习iOS中整理出了一些知识点,先从MRC开始说起. 1.当一个对象在创建之后它的引用计数器为1,当调用这个对 ...

  3. [XMPP]iOS聊天软件学习笔记[一]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  4. selenium2自动化测试学习笔记(三)

    今天是学习selenium的第三天,今天的主题是自动登录126邮箱. 今天总结碰到的坑有三个: 1.frame内元素抓取,使用driver.switch_to.frame(frameId)方法切换锁定 ...

  5. selenium2自动化测试学习笔记(一)

    从这周开始学习自动化测试,采用selenium2,目标是在本月学习到appium,并测试公司的真实APP项目. 系统环境:win10 语言:python3.6.4 工具:selenium2 IDE:p ...

  6. jquery UI 跟随学习笔记——拖拽(Draggable)

    引言 这周暂时没有任务下达,所以老大给我的任务就是熟悉jquery相关插件,我就先选择了jquery UI插件,以及jquery库学习. 我用了两天的时候熟悉Interactions模块中的Dragg ...

  7. iOS开发ReactiveCocoa学习笔记(六)

    RAC操作方法三. demo地址:https://github.com/SummerHH/ReactiveCocoa.git doNext deliverOn timeout interval del ...

  8. python自动化测试学习笔记-10YAML

    之前学习的编写测试用例的方法,都是从excel中编写接口的测试用例,然后通过读取excel文件进行接口自动化测试,这种方式我们叫做数据驱动的方式,由于excel操作起来不灵活,无法实现关联关系的接口测 ...

  9. python自动化测试学习笔记-5常用模块

    上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...

随机推荐

  1. SecureCRT 个人使用爱好配置。

    1.设置默认启动会话设置. 2.设置执行 ls命令显示文件夹,各种文件,不同的对比颜色 2.1 设置前: 2.2 设置后: 3. 如果出现会话框中文乱码 ,设置以下选项 4 . 更改 命令 ls -a ...

  2. SpringCloud微服务实战:一、Eureka注册中心服务端

    1.项目启动类application.java类名上增加@EnableEurekaServer注解,声明是注册中心 1 import org.springframework.boot.SpringAp ...

  3. spring入门(一) 根据xml实例化一个对象

    文档: https://docs.spring.io/spring/docs/5.0.9.RELEASE/spring-framework-reference/core.html#beans-fact ...

  4. 【PTA 天梯赛训练】电话聊天狂人(简单map)

    输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出 ...

  5. 黑帽seo基础手法之快照劫持

    实际上,楼主曾经是搞安全出身的.当然早期也对黑帽手法多少有些了解,最早08年开始,见证了百度一代又一代的黑帽手法,可谓百花齐放,大神大牛级人物层出不穷,但我想黑帽seo,先不谈其性质好坏,单单就技术本 ...

  6. 详解Linux运维工程师

    运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...

  7. JZOJ 5941. 乘

    Sample Input Sample Input1: 4 3 9 6 5 8 7 7 Sample Output Sample Output1: 0做法(转自JZOJ):考虑 a 是定值, 而 b ...

  8. 解决MySQL server has gone away问题的两种有效办法

    最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到M ...

  9. Educational Codeforces Round 47 (Rated for Div. 2) :D. Relatively Prime Graph

    题目链接:http://codeforces.com/contest/1009/problem/D 解题心得: 题意就是给你n个点编号1-n,要你建立m条无向边在两个互质的点之间,最后所有点形成一个连 ...

  10. STL 一些常用的STL函数(持续更新

    先说一下  一边要用到算法的东西一般要加#include<algorithm>头文件 一.栈和队列 1 栈 :一种线性表 特点  后进先出 头文件  #include<stack&g ...