如何使用IOS自动化测试工具UIAutomation

xcode中自带的Instuments工具可以用来进行APP的自动化测试, 以及用于进行内存泄露, 文件读写操作等的性能分析.

第一部分: 熟悉Instruments的UIAutomation.

首先, 选取xcode->Open Developer Tool->Instruments打开Instruments工具, 然后在左上角可以选取设备及被测APP(如下图):

在这里, 我选取了iPhone 5s的一个模拟器, 以及之前编写的一个简单的知乎日报APP.

刚开始接触UIAutomation的话, 建议选择录制脚本的方式来熟悉该工具的使用. 如下图的底部的三个按钮分别是播放, 录制, 停止.

点击中间的红色按钮开始录制, 录制过程中, 代码框中会实时更新自动化脚本, 点击停止后, 就录制成功了一段自动化测试脚本了. 然后可以点击左边执行即可看到iPhone 5s模拟器中的执行结果了, 跟录制的动作是一致的.

</pre><pre name="code" class="javascript">var target = ();
var app = ();
var window = ();

可以看出, 使用UIAutomation对iOS的APP进行自动化测试, 使用的是JavaScript语言.

以上的target, app是建立特定的执行环境, 然后通过()获取APP的UIWindow.

也可以通过var navBar = ()来获取APP的导航栏navigationBar.

使用()可以建立APP的层级结构树(类似于Android自动化中的getHierarchyView()方法).  一个简单的结构如下:

第二部分: 控件的获取及操作

获取UI控件的方法也非常简便:

var tableViews = () // 可以获取所有的tableView组成的数组.
var cells = tableViews[0].cells() // 则获取到第一个tableView中的所有cell元素.
var textFields = ()
textFields[0].value() // 获取该textField中的值

其他控件的获取都是类似的方法, 如buttons(), images(), webViews().

对控件的操作如下:

()[0].setValue("name"); // 向textField中填充value.
cells[0].tap() // 对某个cell执行tap操作.
({x: 100, y: 200}); // 通过坐标执行tap操作
({x: 100, y: 200});
({x: 100, y: 200});
// 缩放
({x:20, y:200}, {x:300, y:200}, 2);
({x:20, y:200}, {x:300, y:200}, 2);
// 拖拽滑动:
({x:160, y:200}, {x:160, y:400}, 1);
({x:160, y:200}, {x:160, y:400});

导航栏navigationBar与tabBar的获取及操作如下:

var navBar = ();
().tap()
var tabBar = ();
var selectedTabName = ().name();
if (selectedTabName != "First") {
()["First"].tap();
}

打印调试log的方式如下:

("mainTest");
( "Select the cells" );
("PASS");
("FAIL"); 

第三部分: 自定义自动化脚本

熟悉了基本的UIAutomation相关的规则之后, 我们就可以来编写自定义的自动化脚本了.

var target = ();
var app = ();
var window = ();
var navBar = ();
();
("mainTest");
( "Select the cells" );
var cells = ()[0].cells();
for (var index in cells) {
//    ()[0].cells()[0].tap();
(cells[index]);
cells[index].tap();
().tap()
}

在这里, 我简单的取出tableView上的所有cell, 并依次点击该cell, 然后跳转至每个cell的详细界面, 最后返回.

log栏里, 会呈现所有的执行结果, 分析起来也是非常方便的.

怎么样, 使用起来是不是蛮简单的. 但是, 在这里, 只是简单总结了Instruments中UIAutomation的基本用法, 真正精髓的东西还要自己去慢慢琢磨.

以上就是如何使用IOS自动化测试工具UIAutomation的详细内容,更多关于IOS自动化测试工具UIAutomation的资料请关注我们其它相关文章!

(0)

相关推荐

  • iOS UIBezierPath实现饼状图

    本文实例为大家分享了iOS UIBezierPath实现饼状图的具体代码,供大家参考,具体内容如下 首先看效果图: 代码: #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface CircleView : UIView @property (nonatomic, copy) NSArray<NSNumber *> *valueArray; @end NS_ASSUME_NONNULL_END // #define S_W

  • iOS tableView多输入框如何获取数据

    前言 难得有点空暇的时间,写写文章,一壶小茶,惬意.扯远了,言归正传. 大家在做App开发的时候,肯定遇到过在一个列表中有多个让用户填写资料的情况,类似于这样的界面: iOS 如果一个tableView中有很多的输入框,而且cell是复用的,这个还有个提交功能 我的设计思路是这样的 1.建立一个Model对象,包含要输入的所有字段, 2.在建立一个cell,有个label和textField, 3.在初始化cell的地方,根据不同的indexRow,显示cell上不同的label,例如昵称.邮箱

  • iOS给border设置渐变色的方法实例

    前言 本文将从4行代码出发给一个view设置渐变色,分别会谈到几个重要的渐变色相关属性,在使用过程中有几个需要特别关注的点. 给一个view的border设置渐变色是比较高阶的用法,希望本文可以在这个方面帮助到你. 给view设置渐变色 通过4行代码就可以给一个view设置渐变色: let view = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) let gradientLayer = CAGradientLaye

  • iOS实现循环滚动公告栏

    本文实例为大家分享了iOS实现循环滚动公告栏的具体代码,供大家参考,具体内容如下 封装了一个继承于UIView的类,如下: #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface XtayNoticeScrollView : UIView - (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray<NSString *> *)titleArray; -

  • 详解 iOS 系统中的视图动画

    动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置. 大小. 从可视化树中删除视图, 隐藏视图等. 你可以考虑用动画效果给用户提供反馈或者用来实现有趣的特效. 在 iOS 系统中, Core Animation 提供了内置的动画支持, 创建动画不需要任何绘图的代码, 你要做的只是激发指定的动画, 接下来就交给 Core Animation 来渲染, 总之, 复杂的动画只需要几行代码就可以了. 哪些属性可以添加动画效果 根据 iOS 视图编程指南

  • 详解使用Xcode7的Instruments检测解决iOS内存泄露(最新)

    作为一名iOS开发攻城狮,在苹果没有出ARC(自动内存管理机制)时,我们几乎有一半的开发时间都耗费在这么管理内存上.后来苹果很人性的出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我们在开发过程中,由于种种原因,还是会出现内存泄露的问题.内存泄露是一个很严重的问题.下面就简单介绍下怎么使用Xcode7自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.(分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)

  • Android和iOS 测试五个最好的开源自动化工具

    自动化测试在产品测试上有着非常重要的作用.实现测试自动化有多种积极的方式,包括最大限度地减少测试执行时间:在关键的发布阶段,用更少的时间确保更大的覆盖范围:在产品开发阶段,可靠又重复性地运行以确保没有引进回归问题.最大限度地减少重复性回归测试循环时的人为错误和疏忽的风险. 在市场上有很多可用的工具,开源的或要付费的.虽然付费和开源工具各有利弊,但是后者在自动化测试社区得到了广泛的应用.根据项目需求来选择合适的自动化工具是非常棘手的. 下面介绍5个最佳的iOS和Android开源自动化工具. 1.

  • 如何在 iOS 应用中添加位置信息

    最近要在 iOS 应用中添加位置信息, 需要满足的需求如下: 应用在前台时能够获取位置信息: 通过切换. Home 按键将应用切换到后台时,停止获取位置信息: 应用程序在前台运行, 直接锁定屏幕时,能够继续获取位置信息: 接下来逐步实现这三个需求. 获取设备位置信息 在 iOS 上获取位置信息是很容易的, 网上的资料也很多, 我的代码如下: // make sure location service is enabled. if (!CLLocationManager.LocationServi

  • 如何使用IOS自动化测试工具UIAutomation

    xcode中自带的Instuments工具可以用来进行APP的自动化测试, 以及用于进行内存泄露, 文件读写操作等的性能分析. 第一部分: 熟悉Instruments的UIAutomation. 首先, 选取xcode->Open Developer Tool->Instruments打开Instruments工具, 然后在左上角可以选取设备及被测APP(如下图): 在这里, 我选取了iPhone 5s的一个模拟器, 以及之前编写的一个简单的知乎日报APP. 刚开始接触UIAutomation

  • 详解appium自动化测试工具(monitor、uiautomatorviewer)

    appium 是一个自动化测试开源工具,支持iOS和 Android平台上的原生应用,web应用和混合应用. 移动原生应用:单纯用ios或者android开发语言编写的.针对具体某类移动设备.可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app: 移动web应用:使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的Chrome),不需要下载到设备上,而是通过浏览器直接访问,比如H5九曲封神游戏: 混合应用:同时使用网页语言与程序语言开发,通过应用

  • python Airtest自动化测试工具的的使用

    目录 Airtest的官网介绍项目构成 如何上手? 一.安装 二.使用 三.在本地环境中使用及遇到的问题 1.使用"pip install airtest" 进行安装 2.IDE连接不存在设备或被占用设备容易假死 3. 假死期间关闭IDE会造成adb驻留 4.尝试连接不存在设备时,即使设备是不存在的也会加入列表 四.最后啰嗦几句 Airtest全称AirtestProject,是由网易游戏推出的一款自动化测试框架,在软件测试的时候使用到了该框架.这里记录一下安装.使用和遇到的坑的问题…

  • python自动化测试工具Helium使用示例

    目录 前言 示例 总结 前言 Helium工具是对Selenium的封装,将Selenium工具的使用变得更加简单.Selenium虽然好,但是在它的使用过程中元素的提取还是比较复杂的,不论是CSSselector.还是Xpath语法的使用都有一定的学习曲线. 示例 首先来看一个简单的实例,通过下面的几行代码就能完成在浏览器打开链接并且搜索的功能实现. from helium import * # 导入helium工具的所有对象 start_chrome("https://www.baidu.c

  • Python自动化测试工具Splinter简介和使用实例

    Splinter 快速介绍 官方网站:http://splinter.cobrateam.info/ 官方介绍: Splinter is an open source tool for testingweb applications using Python. It lets you automate browser actions, such asvisiting URLs and interacting with their items 特性:1.可以模拟浏览器行为,访问指定的URL,并且可

  • Selenium自动化测试工具使用方法汇总

    1.设置无头浏览器模式 from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('- -headless') chrome_options.add_argument('- -disable-gpu') class XX(object): self.driver = webdr

  • iOS中使用Fastlane实现自动化打包和发布

    简介 Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包.发布等工作,可以节省大量的时间. Github:https://github.com/fastlane/fastlane 官网:https://fastlane.tools/ 文档:https://docs.fastlane.tools/ 安装 1.首先要安装正确的 Ruby 版本.在终端窗口中用下列命令来确认: ruby -v 2.然后检查 Xcode 命令行工具是否安装.在终端窗口中输入命令:

  • ios下移动文件方法汇总

    这段objective c代码用于移动指定路径下的文件 复制代码 代码如下: if ([fileManager copyItemAtPath:@"FilePath1"   toPath:@"FilePath2"  error:NULL]) {      NSLog(@"Copied successfully");   } 方法二: 使用 NSFileManager: 让您的文档的路径和您的缓存路径.遍历所有的文件,并将它们移动使用 NSFileM

  • Android App开发的自动化测试框架UI Automator使用教程

    Android的自动化测试有很多框架,其中ui automator是google官方提供的黑盒UI相关的自动化测试工具,(GitHub主页:case使用java写,今天实践了一下官方文档中样例程序,其中还是有一些小问题需要总结一下的. 环境准备: 1.JDK(是的,你没看错,基础的android开发环境必备),以及对应的环境变量配置,不会的可以自己百度下下 2.Android Studio(IDE尊崇个人意愿) 3.android SDK以及配置 4.ANT(主要用于build我们的脚本,生成j

随机推荐