AndroidDriver原理初步--Android自動化測試學習歷程

主要講解內容及筆記:java

1、AndroidDriver核心原理android

對上圖的解析:瀏覽器

PC端的端口經過adb,將android版的Remote Server的apk push到手機上,而後跟手機端的Remote Server進行通訊,手機端的Remote Server與瀏覽器進行通訊,經過WebDriver注入js腳本到瀏覽器,完成想要完成的功能微信

 

基於控件的全部的自動化框架都調用了Instrumentation,或者封裝了它,好比以前的Robotium等多線程

 

2、AndroidDriver源碼分析mvc

一、io.selendroid裏面的多線程框架

在robotium中對UI上的操做,也會涉及到這個部分,須要經過runonuithread才能進行正確調用,不然就會提示error異步

 

UIThreadController.java——走多線程,是爲了避免讓主線程卡住,在平時測試過程當中是發現過相似這樣的問題,若是開發把某些處理直接放在主線程中作的話,就會很容易出現卡死的bug源碼分析

 

好比說某些touch響應的操做啊,或者是keyevent事件等,都應該放在子線程中進行處理,可是開發在處理的時候:應該是經過主線程生成了子 線程,而後受權給子線程去作相關的事情,那麼在咱們對程序進行相應處理的時候,好比一些mouseevent的事件時,應該要使用到handler進行回 調,對其中的原理還有一些地方不是很清晰,可是應該是:經過handler給程序發消息,假裝成主線程,這樣就能夠有權限對應相關操做了,不然諸如「對該 程序的操做不能由not original thread來完成」測試

 

二、io.selendroid.android裏面的InstrumentedKeySender

這個類有一個final的成員變量instrumentation,首先會把手機的這個Instrumentation instrumentation傳給這個成員變量

獲得這個值以後,會去進行異步操做:instrumentation.waitForIdleSync(),而後在try中作操做:sendKeySync(裏面就調用的仍是monkey和monkeyrunner裏面的隱藏接口:點觸操做)

三、io.selendroid.server.handler裏面的ClearElement、ClickElement等,都在這個handler裏面

四、io.selendroid.server.modle——對數據的存儲和處理,都是放在modle裏面的,這就是mvc的m,而後v就是展現,c就是控制

五、它繼承了Selenium的東西,好比說Selenium的查找控件的方法,各類by啊

六、js腳本注入

 

3、閒扯淡部分:

本身目前在用Robotium寫測試case,從查資料,怎麼搭框架,到開始寫程序用了兩天的時間,基本寫程序的話,用了一星期的時間吧,真正用起來仍是很快的,感受掌握了一些東西了,再回來看這個視頻的話,就以爲以爲不少東西很熟悉,理解起來也相對容易了

 

那麼接下來,要先把robotium的測試框架,開發過程當中遇到的問題總結一下,then 看源碼,而後才能更好理解問題解決的方案,and now ,我對於多線程神馬的不是隻知其一;不知其二,是一點都不明白,要試着寫寫啊,java的程序雖說很快上手,能夠寫,可是以爲仍是須要把最基本的java的知識搞 清楚,什麼反射回調之類的,還有interface什麼的,加油,加油!!不要懼怕,一點一點作,就會愈來愈棒的!!!!

 

網易雲課堂:http://study.163.com/course/courseMain.htm?courseId=712011

金陽光測試

新浪微博:金陽光woody

         

          網站地址

一、百度搜:金陽光測試

二、官網:www.goldensunshine.cc

 

 

微信公衆號

相關文章
相關標籤/搜索