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')