如何优化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踩过的坑(持续更新..)

Appium踩过的坑一: 运行appium报错:Appium will not work if used or installed with sudo bixiaopeng@bixiaopengt...

Appium对于xpath 查找元素慢的原因

http://appium.io/slate/en/master/?java#ios-predicate https://developer.apple.com/library/ios/docu...
  • wanglha
  • wanglha
  • 2015年10月20日 09:24
  • 2653

Appium的ios环境搭建、真机运行app

之前没用过苹果系统,在搭建appium过程中,基本命令都是百度来的,如果你在其中遇到了挠头的问题,不要急躁,慢慢来,一定会成功的。 由于开始并没有做文档积累,所以写的不会很全面。有问题请留言,大家一起...

基于Selenium的Web自动化测试脚本在IE上运行慢的解决方法

Selenium对Web浏览器的支持度上,对火狐Firefox的支持是最好的,其次是谷歌的Chrome,然后是IE,有的Web项目需要在三种浏览器上执行,Chrome和IE都需要借助Driver Se...

Appium - iOS 各种问题汇总

Appium - iOS 各种问题汇总 作者: Max.Bai 时间: 2014/10 Appium - iOS 各种问题汇总  1. Appium 滑动:  swipe 有三种方式: ...

Appium输入慢的原因分析

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

appium在真机上运行IOS实例要注意的几点:包括python和java运行log 和部分关键代码

appium在真机上运行IOS实例要注意的几点,appium,java ,python,运行实例和关键代码...
  • today520
  • today520
  • 2014年07月02日 10:11
  • 32981

Appium——iOS自动化测试

Appium下载与安装 关于Appium: 详细介绍见Appium官方网站:http://appium.io 安装步骤: 安装node.js&npm安装Appium安装Selenium WebDr...

Appium输入慢的原因分析

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

python对XML文档的良构性和有效性验证

### 一 .XML文档的结构良好性验证 结构良好的xml文档,需要遵守下面这些规则: 1.所有开始标签必须有对应的结束标签 2.元素可以嵌套,但是不可以重叠 3.有且只能有一个根元素 4....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何优化appium-IOS的自动化测试运行的速度
举报原因:
原因补充:

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