iOS的自动化测试UIAutomation
- 格式:docx
- 大小:660.18 KB
- 文档页数:18
使用Appium进行iOS自动化测试在当今的互联网时代,移动应用软件的发展迅猛,随之而来的是对移动端自动化测试的需求不断增长。
而在移动自动化测试中,Appium是一款功能强大的开源自动化测试框架,它普遍被广大开发者和测试人员使用。
本文将为您详细介绍如何使用Appium进行iOS自动化测试。
一、Appium简介Appium是一种自动化测试框架,其主要功能是在多个平台上测试移动应用和移动浏览器,包括Android和iOS。
Appium使用WebDriver协议自动化独立移动应用程序。
简单来说,Appium就是一款工具,可以帮助测试人员通过自动化脚本来测试手机或平板电脑上运行的应用程序。
Appium模拟用户对应用程序进行的交互,测试人员可以通过这种方式来确定应用程序是否正常运行。
二、Appium的安装在开始使用Appium之前,你需要确保你的电脑上已经安装Node.js。
Node.js将会帮助你执行Appium Server的实例并且能够使你使用Appium。
1、安装Appium```$ npm install -g appium```2、启动Appium```$ appium```启动Appium服务器实例后,你就可以开始使用Appium来测试你的应用程序。
三、使用Appium进行iOS自动化测试Appium的iOS测试需要使用Xcode或者Appium自带的WebDriverAgent来构建APP。
这里我们以Xcode为例,介绍Appium进行iOS自动化测试的流程。
1、在Xcode中创建一个新项目,并通过Xcode将此项目部署到设备上。
2、在Appium的图形用户界面(GUI)中添加一个新的iOS测试。
3、配置测试参数,如App路径、Bundle ID、平台版本等。
4、编写测试用例并运行测试。
在测试用例中,你可以使用各种方法来模拟用户的交互操作,如点击按钮、输入文本、滑动屏幕等。
以下是一个简单的测试用例:```pythonfrom appium import webdriverdesired_caps = {'platformName': 'iOS','platformVersion': '14.4','deviceName': 'iPhone 12','app': '/path/to/your/app.app','automationName': 'XCUITest'}driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)el = driver.find_element_by_accessibility_id('user_name_field') el.send_keys('username')el = driver.find_element_by_accessibility_id('password_field') el.send_keys('password')el = driver.find_element_by_accessibility_id('login_button')el.click()driver.quit()```此测试用例会启动一个模拟器或者iOS设备,找到一个名为`user_name_field`的输入框,输入用户名`username`,找到一个名为`password_field`的输入框,输入密码`password`,再找到一个名为`login_button`的按钮,单击它来登录。
iOS自动化测试工具大比拼随着移动应用和设备不断增加,iOS平台上的自动化测试工具也在不断发展和改进。
这些工具对于开发人员和测试人员来说至关重要,因为它们能够帮助他们更高效、更准确地进行测试,从而提高应用的质量。
本文将对当前市场上几种知名的iOS自动化测试工具进行比较和评估。
一、AppiumAppium是一种开源的跨平台自动化测试框架,适用于iOS、Android和Windows应用的测试。
它支持多种编程语言,如Java、Python和Ruby,同时还提供了针对iOS平台的特定功能。
Appium可以通过WebDriver协议来控制iOS设备上的应用,实现自动化测试。
其优点是易于使用和学习,可以在不同平台上重用测试代码,开发人员可以使用自己熟悉的编程语言进行自动化测试。
然而,Appium对于一些高级功能的支持比较有限,对于复杂的测试场景可能不够灵活。
二、XCTestXCTest是苹果公司提供的官方自动化测试框架,是iOS开发中常用的测试工具。
它与Xcode集成紧密,并且支持Objective-C和Swift两种编程语言。
XCTest提供了丰富的断言和测试方法,使得开发人员可以轻松地编写和运行测试代码。
与Appium相比,XCTest更加专注于单元测试和UI测试,适用于对应用的特定部分进行测试。
但是,XCTest的不足之处在于它只能在Xcode环境下运行,不支持跨平台测试。
三、CalabashCalabash是一个开源的自动化测试框架,主要用于移动应用的功能测试和UI测试。
它支持iOS和Android平台,并且可以使用多种编程语言编写测试代码。
Calabash的一个重要特点是它可以通过Cucumber来描述和管理测试用例,使得测试代码更具可读性和可维护性。
Calabash提供了丰富的API和插件,可以方便地进行各种测试操作。
但是,Calabash在iOS平台上的效果相对较差,在某些场景下可能会出现稳定性和兼容性问题。
快速入门自动化测试是非常有用的,以测试您的应用程序“,而你的睡眠”。
它使您能够快速跟踪回归和性能问题,同时也开发新的功能,而不必担心打破你的应用程序。
由于,苹果公司发布了iOS 4.0的一个的框架UIAutomation,可用于实现自动化测试在真实设备上的iPhone模拟器上。
上的文档UIAutomation是相当小的,而且也没有大量的资源在网络上。
本教程将告诉你,如何整合UIAutomation在您的工作流程。
最好的指针开始是苹果的文档的UIAutomation,苹果工具文档的一个很好的快速教程,当然,这些幻灯片/视频WWDC 2010 -会话306 - 自动化与仪器的用户界面测试。
你需要一个免费的developper帐户来访问此资源的整合。
另一个框架要提到是OCUnit的,它包含在Xcode中,可用于单元测试添加到您的应用程序。
1。
你的第一UIAutomation脚本UIAutomation Javascript编写的功能测试。
有一种强烈的在UIAutomation和可访问性之间的关系,所以你会使用辅助的标签和值模拟和模拟用户界面交互的检查结果。
让我们去了,写我们的第一个测试!使用iOS模拟器1.下载的同伴的项目TestAutomation.xcodeproj,并打开它。
该项目是一个简单的2个选项卡的标签栏的应用程序。
2.确保选择以下方案“TestAutomation> iPhone 5.0模拟器”(也许你已经切换到5.1,所以它可能是iPhone 5.1)3.启动工具(产品简介)或⌘一4.在iPhone模拟器,选择自动化模板,然后在“个人资料”5.仪器启动,并立即开始录制。
停止记录(红色按钮或⌘R)。
6.在“脚本”窗口中,单击“添加”>“创建”来创建一个新的脚本7.在“脚本”窗口中编辑器,请点击下面的代码8.目标= UIATarget.localTarget();9.VAR的应用程序target.frontMostApp();10.变种窗口= app.mainWindow();11.target.logElementTree();12.重新启动脚本⌘R(你不需要保存)。
python uiautamation2 ios 例子Python UIAutomation2 iOS 例子在 Python 中使用 UIAutomation2 框架进行 iOS 自动化测试是一种快速、高效且可靠的方法。
以下是一个简单的示例,展示了如何使用 Python 编写 UIAutomation2 脚本并在 iOS 设备上运行。
```pythonimport uiautomation as automationimport time# 连接 iOS 设备automation.appStart('YourAppName') # 替换为你要测试的应用名称# 在 iOS 设备上查找并点击按钮button = automation.ButtonControl(searchDepth=5, Name='YourButtonName') # 替换为你要点击的按钮名称button.Click()# 在 iOS 设备上查找并输入文本textField = automation.EditControl(searchDepth=5, Name='YourTextFieldName') # 替换为你要输入文本的文本框名称textField.SendKeys('YourText') # 替换为你要输入的文本内容# 在 iOS 设备上查找并滑动scrollableView = automation.ScrollableControl(searchDepth=5,Name='YourScrollViewName') # 替换为你要滑动的滚动视图名称scrollableView.ScrollVertical(1, 0.5) # 滑动到下半部分# 在 iOS 设备上查找元素并验证staticText = automation.TextControl(searchDepth=5, Name='YourStaticTextName') # 替换为你要验证的静态文本名称assert == 'ExpectedText' # 替换为你期望的静态文本内容# 在 iOS 设备上执行其他操作...# 断开与 iOS 设备的连接automation.appStop('YourAppName') # 替换为你要停止测试的应用名称```请注意,你需要先安装 `UIAutomation2` 模块,可以使用以下命令进行安装:```pip install uiautomation```该示例代码演示了在 iOS 设备上的按钮点击、文本输入、滑动和元素验证等常用操作。
AppiumiOS⾃动化测试⼀、iOS Appium 原理1.1 iOS 9.3 系统之前⾃动化测试1.1.1 Native ⾃动化这是iOS 9.3 系统之前⾃动化测试的架构模式。
通过,我们很容易理解 iOS Appium 原理:Appium Client 端执⾏代码发送到 Appium Server端(Server 集成了苹果官⽅的 Instruments);Server 端将⼀⾏⾏代码翻译成⼀条条指令,同时在⼿机上注⼊ bootstrap.jar ;Server 与该 jar 包通信将指令传给 bootstrap.jar,jar 包调⽤⼿机⾥的⾃动化测试框架(UIAutomation),UIAutomation框架执⾏指令。
1.1.2 Hybrid(WebView)⾃动化通过 Android Appium 原理的学习,Android 4.4 系统之后,Appium ⽀持使⽤ ChromeDriver 进⾏对 Hybrid 页⾯的⾃动化测试。
那么 iOS 上是怎么做的呢?iOS 上早期苹果官⽅就⼀直提供 iOS webkit debug proxy(这是苹果官⽅⾃⼰开发的私有的通信协议),Appium 集成了该框架,通过它传递指令。
1.2 iOS 9.3 系统之后⾃动化测试Appium 在 iOS 下⼯具的变⾰iOS 9 之前⼀直以 instruments 下的 UIAutomation为驱动底层技术(弊端由于 instruments 的限制,单台 mac 只能对应单台设备);iOS 9.3 时代推出 XCUITest ⼯具,⽤以替代 UIAutomation;iOS 10 时代苹果直接废弃了 UIAutomation、Facebook 推出 WebDriverAgent(实现的 server 能够⽀持单台 mac 对应多个设备);Appium 在iOS 9.3 后全⾯采⽤ WebDriverAgent 的⽅案。
uiautomation 例子
UIAutomation是一种自动化测试工具,用于测试iOS应用程序。
它允许开发人员编写脚本来模拟用户与应用程序的交互,并对应用
程序的界面进行测试。
下面我将从不同角度给出一些UIAutomation
的例子。
1. 界面交互,通过UIAutomation可以模拟用户在应用程序中
的各种交互操作,比如点击按钮、输入文本、滑动屏幕等。
例如,
可以编写一个UIAutomation脚本来模拟用户登录一个应用程序的过程,包括输入用户名和密码,然后点击登录按钮。
2. 界面验证,UIAutomation也可以用于验证应用程序的界面
是否按预期进行显示。
例如,可以编写一个UIAutomation脚本来检
查某个特定元素是否存在于应用程序的界面上,或者验证某个元素
的属性是否符合预期。
3. 自动化测试,UIAutomation可以用于编写自动化测试用例,对应用程序的各种功能进行测试。
例如,可以编写一个UIAutomation脚本来测试一个购物应用程序的下单流程,包括选择
商品、填写配送信息、确认订单等操作。
4. 性能测试,除了功能测试,UIAutomation还可以用于测试
应用程序的性能。
通过模拟用户在应用程序中的操作,可以评估应
用程序在不同场景下的性能表现,比如响应时间、内存占用等指标。
总之,UIAutomation可以在各个阶段的应用程序开发过程中发
挥作用,从功能验证到性能评估,都可以通过编写UIAutomation脚
本来实现。
希望这些例子能够帮助你更好地理解UIAutomation的应
用场景。
iOS开发教程:iOS UI自动化测试一、关于iOS UI自动化测试要测试一个已成型的应用,从用户所见的角度来做自动化收益还是比较高的。
目前了解的UI测试方法分为两类,一种是iOS4提供的UI Automation,一种是把测试代码注入到应用中。
1)iOS4的UI Automation用JavaScript驱动在应用上模拟用户行为,由 Instruments的Automation 工具执行。
具体的可以参考这篇文章在iOS 4 中实现UI自动测试,操作很简单,先编写自动化测试的Javascript文件,在Automation工具中选择这个文件,选择测试的target(模拟器和真机都可以),然后点Record(这个名字起得很坑爹,我一度以为它支持录制,像Selenium一样转化为js代码呢),此时会运行所选的应用同时自动化脚本也开始运作了。
API可以在SDK Developer Document里找到,主要的是UIAElement、UIAElementArray、UIALogger这几个。
但是API不是很完善,比如我要得到整个elementTree可以通过UIATarget.localTarget().logElementTree()得到,但是没有API能获取所有的Element,获取Element只能以获取子控件的形式一级一级查找,最后的代码可能就会变成这样:window.tableViews()[0].cells()[1].buttons()[2].tap();即使可以通过button的name直接找到这个button也需要写成这样:window.tableViews()[0].cells()[1].buttons().firstWithName("search");非常难看难维护。
我尝试遍历一个view上的所有控件整整运行了两分钟。
另外推荐一个测试框架,Working with UIAutomation这篇文章中提供了tuneup_js这样一个框架,封装得非常简单,除了没有before after之类的封装外对我来说暂时已经够用了(需要每个case执行完后或者执行开始前恢复默认状态,不过这个很容易实现),可以参考。
uiautomation invoke原理UIAutomation Invoke原理UIAutomation是iOS中的一个自动化库,可以用来进行一些自动化测试和UI界面的操作。
其中,UIAutomation的Invoke方法则是非常重要的一个功能,通过该方法可以实现自动化测试时点击按钮、输入文本等人为操作。
UIAutomation Invoke方法的内部实现原理其实很简单,可以简单概括为以下几个步骤:1. 获取目标控件及其坐标信息UIAutomation会根据传入的query语句(XPath表示法)获取需要进行操作的控件,同时也会获取该控件的坐标信息,这里的坐标信息包括该控件在屏幕坐标系下的左上角位置和控件的宽高。
2. 计算目标控件中心点坐标通过目标控件坐标和宽高信息,可以计算出该控件在屏幕坐标系下的中心点坐标。
3. 移动鼠标指针到目标控件中心点UIAutomation在内部实现时会通过CGEventCreateMouseEvent函数创建一个鼠标事件,并设置该事件的位置为目标控件的中心点坐标。
然后调用CGEventPost函数将该事件发送到系统事件队列中,从而模拟鼠标移动到目标位置。
4. 发送鼠标点击事件在鼠标移动到目标控件中心点后,可以通过调用CGEventCreateMouseEvent函数创建一个鼠标点击事件,并设置该事件的位置为目标控件的中心点坐标。
然后同样通过调用CGEventPost函数发送该事件,从而模拟鼠标在目标控件上进行点击操作。
通过上述四个步骤,UIAutomation就可以实现在iOS设备上对特定控件进行点击操作了。
需要注意的是,鼠标事件的发送需要通过CGEventPost函数进行,而CGEventPost函数只能在iOS模拟器中使用,并不能用于真实设备上的测试。
因此,真实设备上的UI自动化测试需要使用其他库来进行。
总之,UIAutomation Invoke方法的实现并不复杂,基本上就是通过CGEventCreateMouseEvent和CGEventPost函数来模拟鼠标操作。
写在前面研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略,对于初学者来说有一定的难度。
本来是打算自己动手写一篇关于iOS的UI自动化测试的入门级别的介绍性文档的,但想起来后面在具体解决一些问题的时候,收藏一篇很好的Blog,很全面地介绍了如何使用UIAutomation的JavaScript Libraries做iOS程序的自动化测试。
如果作者早点看到这篇文章,应该要少走一些弯路,这里没有创意性的它他翻译成中文,希望对你们有一些帮助。
原文地址:/2012/04/08/ios-automated-tests-with-uiautomat ion翻译正文:快速入门自动化测试代码可以“在你的睡着的时候”很好地帮你测试你的应用程序。
它可以让你能够快速地跟踪你程序中的回归和性能方面的问题,这样你就不用担心你新增的功能会影响到你之前已经完成开发的程序了。
随着iOS4.0的发布,苹果公司同时发布了一个名为UIAutomation的测试框架,它可以用来在真实设备和iPhone模拟器上执行自动化测试。
但官方关于UIAutomation的文档相当的有限,在网络上也没有太多的资源可以查找的。
本文将向你展示你如何将UIAutomation整合到你的工作流程当中去。
作为基础知识的准备,你可以先看一下苹果公司关于UIAutomation的文档,另外还有一篇快速入门的介绍苹果Instruments的文档也值得看看,当然,如果你有一个免费的Apple开发者账号的话,你可以看一下WWDC 2010 - Session 306 –使用Instruments进行用户界面自动化测试的幻灯片或者视频。
除此之外,包括在Xcode中的OCUnit测试框架也可以用来为你的应用程序编写单元测试。
1. 第一个UIAutomation测试脚本∙使用iOS 模拟器∙使用iOS设备2. 处理UIAElement和元素可访问性(Accessibility)∙UIAElement层次结构∙模拟用户操作3. 经验分享(让你的生活变得更简单)∙类库Tune-up介绍∙导入外部脚本∙使用强大的命令行∙使用录制交互功能∙当遇到问题时,加上“UIATarget.delay(1);”4. 高级交互∙处理非预期和预期的提示框(alerts)∙多任务∙屏幕方向5. 总结∙有用的链接∙一个视频1. 你的第一个UIAutomation测试脚本UIAutomation的功能测试代码是用Javascript编写的。
如何使⽤IOS⾃动化测试⼯具UIAutomation⽬录第⼀部分: 熟悉Instruments的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的资料请关注其它相关⽂章!。
快速入门自动化测试是非常有用的,以测试您的应用程序“,而你的睡眠”。
它使您能够快速跟踪回归和性能问题,同时也开发新的功能,而不必担心打破你的应用程序。
由于,苹果公司发布了iOS 4.0的一个的框架UIAutomation,可用于实现自动化测试在真实设备上的iPhone模拟器上。
上的文档UIAutomation是相当小的,而且也没有大量的资源在网络上。
本教程将告诉你,如何整合UIAutomation在您的工作流程。
最好的指针开始是苹果的文档的UIAutomation,苹果工具文档的一个很好的快速教程,当然,这些幻灯片/视频WWDC 2010 -会话306 - 自动化与仪器的用户界面测试。
你需要一个免费的developper帐户来访问此资源的整合。
另一个框架要提到是OCUnit的,它包含在Xcode中,可用于单元测试添加到您的应用程序。
1。
你的第一UIAutomation脚本UIAutomation Javascript编写的功能测试。
有一种强烈的在UIAutomation和可访问性之间的关系,所以你会使用辅助的标签和值模拟和模拟用户界面交互的检查结果。
让我们去了,写我们的第一个测试!使用iOS模拟器1.下载的同伴的项目TestAutomation.xcodeproj,并打开它。
该项目是一个简单的2个选项卡的标签栏的应用程序。
2.确保选择以下方案“TestAutomation> iPhone 5.0模拟器”(也许你已经切换到5.1,所以它可能是iPhone 5.1)3.启动工具(产品简介)或⌘一4.在iPhone模拟器,选择自动化模板,然后在“个人资料”5.仪器启动,并立即开始录制。
停止记录(红色按钮或⌘R)。
6.在“脚本”窗口中,单击“添加”>“创建”来创建一个新的脚本7.在“脚本”窗口中编辑器,请点击下面的代码8.目标= UIATarget.localTarget();9.VAR的应用程序target.frontMostApp();10.变种窗口= app.mainWindow();11.target.logElementTree();12.重新启动脚本⌘R(你不需要保存)。
脚本运行后,日志出现,你可以阻止它。
瞧!您已经写了您的第一UIAutomation测试!使用iOS设备一个真正的设备,也可以运行这个测试,而不是模拟器。
自动测试设备,支持多任务的iPhone 3GS,iPad的,仅适用于运行iOS 4.0。
UIAutomation不幸的是,在iPhone 3G上,无论是操作系统版本。
要运行测试的设备上:1.将iPhone连接到USB2.选择计划“TestAutomation> iOS装置”3.检查发布配置与一个Developper配置文件(而不是一个Ad-Hoc分布情况)。
默认情况下,分析是在释放(没有任何理由来分析一个应用程序在调试!)4.个人应用程序(⌘我)5.比以前在模拟器上按照相同的步骤。
2。
处理与UIAElement和辅助功能UIAElement层次有很强的关系之间无障碍UIAutomation:如果配备无障碍访问控制,您将能够设置/获取值,产生动作等的控制是不是“看得见”的辅助工具,将无法访问通过自动化。
您可以允许访问/自动化控制是否使用Interface Builder,或通过编程方式设置属性isAccessibilityElement。
你必须支付一定的关注时,设置辅助容器视图(即包含其他UIKit元素)。
启用无障碍的整个视图可以“隐藏”其子视图访问/自动化。
比如,在项目中,控制器的视图出口应不能够访问,否则的子控制将不访问。
如果您有任何问题,logElementTree是您的朋友:列出所有当前可见的元素可以访问。
每个UIKit的控制,可以访问可以表示为一个JavaScript对象,UIAElement。
UIAElement 有几个属性,名称,价值,元素,父。
你的主窗口包含了很多的控制,它定义了一个UIKit 的层次结构。
这UIKit的层次结构,对应的UIAElement的层次结构。
例如,通过调用logElementTree在前面的测试中,我们有以下三种:+ - UIATarget:名称:iPhone模拟器正确的:{{0,0},{320480}}| + - UIAApplication:名称:TestAutomation的正确:{{0,20},{320460}} | | - UIAWindow:正确的:{{0,0},{320480}}| | | + - UIAStaticText的:姓名:一是该价值:首先查看正确的:{{54,52},{212,43}}| | | + - UIATextField的名称:用户的文本值:点击一些文字在这里!正确的:{{20179},{280,31}}| | | + - UIAStaticText的:姓名:文字是:值:文字是:正确的:{{20231},{112,21}}| | | + - UIAStaticText:值:正确的:{{145231},{155,21}}| | | + - UIATabBar:正确的:{{0431},{320,49}}| | | | + - UIAImage:正确的:{{0431},{320,49}}| | | | + - UIAButton:名称:第一个值:1 RECT:{{2432},{156,48}} | | | | + - UIAButton:名称:二正确的:{{162432},{156,48}}要访问该文本字段,你可以这样写:。
mainWindow的变种textField的。
frontMostApp = UIATarget.localTarget ()()()。
文本字段()[0];您可以选择基于0的索引或元素的名称来访问元素。
例如,以前的文本字段也可以被这样的访问:VAR textField的。
frontMostApp = UIATarget.localTarget()()。
主窗口()。
文本框()[“用户文本”];较新版本更清晰,更应该是首选。
在Interface Builder中,您可以设置的UIAElement名:或计划性:myTextField.accessibilityEnabled = YES;myTextField.accessibilityLabel = @“用户文本”;你可以看到现在所使用的辅助功能属性UIAutomation针对不同的控件。
这是非常聪明的,因为:1)只有一个框架,以学习; 2)编写自动化测试,你也将确保您的应用程序可以访问!所以,通过调用下面的每个UIAElement可以访问它的孩子要访问的第一个选项卡的标签栏,你可以这样写:变种的tabbar = UIATarget.localTarget()。
frontMostApp()。
TabBar中();VAR tabButton tabBar.buttons()[“第一”];UIAElement层次是非常重要的,你要处理不断。
记住,你可以转储的层次结构,每次在你的脚本由调用logElementTree上UIAApplication:。
logElementTree。
frontMostApp UIATarget.localTarget()()();在模拟器上,您还可以激活的可访问性检查。
启动模拟器,前往“设置”>“通用”>“辅助功能”>“辅助功能”督察“,并将其设置为”开“。
这个小彩虹中的可访问性检查。
折叠时,辅助功能是关闭的,并扩展了无障碍时。
要激活/ desactivate辅助功能,你只需要点击箭头按钮。
现在,到我们的测试应用程序,启动它,并启动督察。
然后,点击文本字段和检查的名称和值属性的相关的UIAElement(也NSObject的accessibilityLabel和性能相当accessibilityValue)。
检查员将帮助您调试和编写脚本。
模拟用户交互让我们更进一步,模拟用户交互。
轻按一键,您只需拨打自来水()这个元素:变种的tabbar = UIATarget.localTarget()。
frontMostApp()。
TabBar中();VAR tabButton tabBar.buttons()[“第一”];/ /点击标签栏!tabButton.tap();您也可以拨打doubleTap()中,twoFingerTap() UIAButtons。
如果你不想要的元素为目标,但只在指定的坐标画面在屏幕上的互动,你可以使用:∙水龙头:∙UIATarget.localTarget()。
点选(X:100,Y:200});∙UIATarget.localTarget()。
doubleTap({:100,Y:200});∙UIATarget.localTarget()。
twoFingerTap({:100,Y:200});∙捏:∙UIATarget.localTarget()。
pinchOpenFromToForDuration({:20,Y:200},{×:300,Y:200},2);∙UIATarget.localTarget()。
pinchCloseFromToForDuration({:20,Y:200},{×:300,Y:200},2);∙拖动和弗里克:∙UIATarget.localTarget()。
dragFromToForDuration({:160,Y:200},{160,Y:400},1);∙UIATarget.localTarget()。
flickFromTo({:160,Y:200},{160,Y:400});在您指定的时间,只在一定范围内接受即:拖时间,值必须大于或等于0.5秒或不到60岁。
现在,让我们把在实践中:1.停止(⌘R)仪器2.在“脚本”窗口中,删除当前的脚本3.点击“添加”>“导入”,然后选择TestAutomation/TestUI/Test-1.js4.点击记录(⌘R)和观看的发生。
该脚本是:测试名=“测试”;目标= UIATarget.localTarget();VAR的应用程序target.frontMostApp();变种窗口= app.mainWindow();UIALogger.logStart(测试名);app.logElementTree();/ / - 选择元素UIALogger.logMessage(“选择第一个选项卡”);VAR标签栏app.tabBar();selectedTabName = tabBar.selectedButton()。
名称(); (selectedTabName!“第一”){tabBar.buttons()[“第一”。