selendroid是国内使用非常少的框架、资料也少。刚好公司项目用到,给大家分享下,技术不太行,有错误还望指正。
使用selendroid契机,是公司开发的APP,需要大量捕捉Toast信息。公司的自动化平台已经很成熟,并且WEB自动化已经使用ruby watir-Webdriver。
因此为了加入公司自动化平台,使用ruby是最快的方式,但是资料少这是很头疼的事情。
使用APPIUM的时候发现指令在移动端执行的速度很慢,而在使用selendroid之后惊喜的发现配置速度很快,快要赶上webdriver的速度了。
特别说明:并非高版本(API>16)就不能使用selendroid作为自动化测试框架,实测API 21也是可以使用selendroid
原始参考资料:http://selendroid.io/
纯selendroid环境搭建:
具体可参考网站资料,java -jar XXXXXx.jar -app test.apk 即可开启selendroid服务器。
Appium-selendroid环境:
但作为项目实施 建议使用appium的selendroid模式。
好处:
1、appium已经加入selendroid作为一个启动模式,日志管理、BUG定位环境搭建等都比较成熟。
2、纯selendroid直接使用selenium库作为驱动,很多辅助动能需要自己去实现,例如中文输入、unicode输入等。这些移动端测试能考虑的事情,appium团队事实上已经帮忙考虑了。
3、启动appium与默认appium模式并无区别,使用GUI开启或者 node appium.js即可。
具体的APPIUM环境搭建不在赘述,大家可以参考网上很多的教程应该都不难。
ruby初始化:
贴入代码:
# encoding utf-8
require 'watir-webdriver'
require 'appium_lib'
_caps={caps:{ app:'E:/APP/app-debug_3.1.3.876.apk',unicodeKeyboard:'True',resetKeyboard:'True',platformVersion:'5.0',automationName:'Selendroid',udid:'LGD857cfd6ea69',deviceName:'1', platformName:'Android', appActivity:'.activity.Anew.Splash.SplashActivity', appPackage:'com.tenda.router.app',newCommandTimeout:3600},appium_lib: { sauce_username: nil, sauce_access_key: nil } }
$b= Appium::Driver.new(_caps).start_driver
事实上与APPIUM初始化并无太多区别:
1、APP路径必须有,因为每次初始化都要重新安装APP。(大家不用担心APP安装会很麻烦,命令安装时间很短)
2、UID必须有 就是appium的devices name参数。
关于selendroid元素定位:
可以使用sdk里面的uiautomatorviewer工具进行定位获取ID等信息,其他用不到的可以参考selendroid官方网站的地位方式。
注意:uiautomatorviewer获取ID时需要去掉前面的Package名称/ 后面的才是selendroid的ID,否则定位不到。
并且selendroid虽然直接使用appium类,但是需要使用selennium的语法,因此使用appium的定位语句语法会报错。
我用到最多的就是
按照全词匹配查找:driver.find_element(:link_text,'Blog')
按照text的部分进行查找:driver.find_element(:partial_link_text,'Blo')