用 appium 测试过 IOS 的同学都会发现,IOS 脚本执行速度比 Android 慢很多,具体原因这里不深究;只讲下自己目前的优化策略,希望对后学习的同学有些帮助,有经验的同学也希望多多提供分享。
1.尽量避免使用 xpath: -
xpath 的通用灵活性使用起来确实很方便,一开始我们找元素是全部用二次封装的 xpath 来查找;然而对比后却发现,用 xpath 找元素要比 ByName 和其他慢很多。所以建议大家尽量避免使用 xpath 查找元素。
2.用 SetValue 代替 SendKey: -
//C#语言:
AppiumWebElement appiumElement = (AppiumWebElement)driver.FindElementById("账号");
appiumElement.SetImmediateValue(“136xxxx9501”);
代替:
IWebElement element = driver.FindElementById("账号");
element.SendKeys("136xxxx9501");
3.尽可能少的去和 appium 通讯: -
能直接在代码中处理的,就尽量在代码中处理,减少和 appium 的通讯,例如:
startX = elmentA.Location.X ;
endX = startX /5 ;
代替:
startX = elmentA.Location.X ;
endX = elmentA.Location.X/5 ;
4.待尝试: -
另外想到的一种优化方式就是缓存页面,暂时还没开始做:思路是先用 driver.PageSouce 将页面缓存起来,重写查找方法,先去缓存中找元素,缓存中找不到时,再重新用 driver.PageSouce 下载页面元素重新找。这种方式理论上会快很多,不过麻烦的是需要重写很多东西了。
鄙人基础比较差,刚做 Appium 自动化不久,希望高手们多多指导,多多分享!