如何优化appium-IOS的自动化测试运行的速度

原创 2016年08月29日 23:18:44

做了测试刚一年,我做了PC appium-android,appium-ios测试开发,也有一些心得,大神什么的就不要看了,直接正题

我们也都知道appium-ios测试原理是appium调用instrument驱动手机,所以其实我们写的代码都会转化成instrument代码去执行,appium要放出一套标准的接口,所以会把instrument封装起来,

我用的appium版本是1.4.13,,开发语言是C#

要想速度提升,只要做到以下三点

1.尽量减少了和appium的交互

假若一个页面需要抓取很多元素,而这个页面时静止的(控件属性不会再变动)我们可以用getpageSource把页面源码获取下来,解析成一个XML对象,然后利用解析XML对象的接口去获取所需的节点对象,实现所需业务示例代码如下:

 pageSource =driver.PageSource;
 xml = new XmlDocument();
 xml.LoadXml(pageSource);    
 xnl = xml.SelectNodes(@"//UIATableCell[@y<" + Screen_Y * 0.75 + " and @visible='true']/UIAStaticText");

假若业务是判断一个控件属性的变化,不必每次都去抓取这个控件,然后取他的属性对比,只需要抓取一次,然后不同时间取他的属性即可,因为appium不会缓存控件的属性,若界面上控件属性变化,再次获取这个控件的属性也会变化,是即是性的,示例代码如下

element = driver.FindElement(By.Name("wtKeyBoard"));

string value1=element.text;

Thread.sleep(5000);

string value2=element.text;

2尽量少用ByXpath取抓取控件

避免使用By.name因为Appium1.5已经移除By.name这个抓取方式

By.Id By.Name抓取元素的速度一般般

ByXpath的速度最慢,ios是可以抓取全屏的控件,所以这就导致了有一个问题,假若页面的控件很多,比如有TableCell的页面,页面的控件的越多ByXpath的速度就越慢,ByXpath的抓取机制我就不说了,网上有

所以用什么替代ByXpath去实现相应的业务这是一个问题,百度了好多资料,终于发现 driver.ExecuteScript();是一个好东西 他可以直接运行instrument的 js代码,

若想使用好这个恐怕得学另一套接口了

苹果官方网站提供的intrumnet官方文档https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/index.html#//apple_ref/doc/uid/TP40009771

获取一个app的主Window

driver.ExecuteScript(@"var window=target.frontMostApp().mainWindow();");

点击一个按钮

driver.ExecuteScript(@“window.navigationBar().buttons()['setting home'].tap();")

使用谓语查找元素 使用谓语也是一个很强大的语法体系跟Xpath一样,这就是为什么可以替代Xpath实现业务,也可以转为IWebElement对象,然后使用Appium接口

driver.ExecuteScript("window.navigationBars().withPredicate(\"name=='持仓'|| name='融资融券' \")") as IWebElement

driver.ExecuteScript执行的js结果是字符串,那返回的就是转为字符串的object,若是一个控件对象这是一个可以转为IWebElement的object,若是无值,这是一个空object

执行速度杠杠的。

3避免抓取很多控件去遍历

如果去遍历控件,这是一个很耗费时间的事情,如果必须遍历,最好用PageSource方法,最好抓取时带一些条件以避免后面的遍历




Appium Android测试中sendkeys 输入速度慢的替代方法

Appium Android测试中sendkeys 输入速度慢的替代方法 (Workround to improve Appium sendkeys method for Android  testi...
  • achang21
  • achang21
  • 2017年03月09日 14:21
  • 2156

Appium输入慢的原因分析

使用appium输入中文,发现好慢!至少5秒以上,如果在这样的情况下做测试,这就好悲剧了。 从appium(1.6.3)代码上来看,没有什么问题,直接是通过boostrap的setText的方法。说...
  • zdhsoft
  • zdhsoft
  • 2017年05月27日 10:08
  • 1309

Appium输入慢的原因分析

使用appium输入中文,发现好慢!至少5秒以上,如果在这样的情况下做测试,这就好悲剧了。 从appium(1.6.3)代码上来看,没有什么问题,直接是通过boostrap的setText的方法。说...
  • zdhsoft
  • zdhsoft
  • 2017年05月27日 10:08
  • 1309

appium+java+ios自动化环境的搭建部分代码,资料的搜集与整合。

对环境的需求: http://appium.io/ 上的说法: iOS
Mac OSX 10.7+
XCode 4.5+ 和 Command Line Tools ...
  • u012874998
  • u012874998
  • 2014年09月26日 15:43
  • 2153

appium-iOS设备的自动化测试环境搭建

前言最近一段时间,花了较多的精力在Android的自动化上面,但是看到网上有很多人都在研究以及学习iOS的自动化,所以昨天就抽空研究了下。做个笔记记录下。正文 brew 这边提下brew的安装,b...
  • qq744746842
  • qq744746842
  • 2015年08月26日 11:30
  • 3298

Appium IOS 自动化测试初探

手机平台的自动化测试工具很多,之前研究过了安卓和苹果的原生自动化测试框架,经一些同事介绍,貌似Appium是个不错的工具。 想记录一下研究的结果,也算是篇干货的文章 在网上也看了一些视频,个人认为这个...
  • soulery
  • soulery
  • 2014年05月08日 10:49
  • 2892

Appium 实现iPhone真机自动化-常见问题

摘要: 首先 Appium 支持 iPhone 真机,以下4个条件必须满足:   1. 苹果开发者账号和开发者证书   2. 苹果设备,确保这个设备已经被配置为开发机器。怎么配置?   3. ...
  • Temanm
  • Temanm
  • 2016年07月08日 18:06
  • 4535

appium进行ios的自动化测试,appium的安装

1.安装node.js     去官网下载的是安装包,但是性质和安装是使用sudo命令一样,后面会有问题,所以使用命令brew install node安装;     这个是基于brewHome的,...
  • u014131398
  • u014131398
  • 2015年07月29日 11:48
  • 1496

Appium移动自动化框架初探

作者:cryanimal QQ:164166060 官方网站:http://appium.ioAppnium是由SauceLabs支持,一家业界领先的测试产品公司, 有成熟的企业测试解决方案 Appi...
  • kaka1121
  • kaka1121
  • 2016年06月22日 11:17
  • 6663

Appium+Opencv 图像识别在自动化中的使用1-环境搭建

Appium+Opencv java环境创建看了一篇关于手机图像识别在手机自动化中的应用的文章,很敢兴趣,所以进行了摸索尝试。这里记录环境的搭建。涉及工具 Appium genymotion virt...
  • yn_cp
  • yn_cp
  • 2016年09月20日 17:54
  • 1267
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何优化appium-IOS的自动化测试运行的速度
举报原因:
原因补充:

(最多只允许输入30个字)