在上一個系列中我們分析了UiAutomator的核心源碼,對UiAutomator是怎么運行的原理有了根本的了解。今天我們會開始另外一個在安卓平臺上基于UiAutomator的新起之秀--Appium的源碼分析之旅。
本文在真個系列中會扮演一個簡介的角色,不會分析任何的代碼,只會先給大家一個基本的印象,方便大家在持有這個印象的基礎上往下和本人一塊分析。
下面一部分就是藍色的就是bootstrap所在的位置,可以看到它是運行在我們的安卓目標測試機器端的,它會監聽4724端口獲得命令然后pass給UiAutomator來做處理。
那么我們應該怎么來給bootstrap做一個定義呢?我不知道官方有沒有做一個定義,但是按照我自己的語言,我會這樣來定義它:
上面寥寥幾句道出了bootstrap的定義,那么往下我們就繼續寥寥幾行的把bootstrap這個jar包的關鍵類以及它的關鍵方法和相應的本人的一些說明給列出來,給大家現有一個draft idea每個類大概是怎么一回事,這樣我們往下的文章就比較好說,大家也比較好理解了。
Class | Key Method | Key Member | Parent | Description | Comment |
Bootstrap | testRunServer | | | 以一個UiAutomatorTestCase的方法的方式運行一個SocketServer來監聽4724端口 | 整個bootstrap是以UiAutomator的TestCase的方式運行的,所以這里的Bootstrap這個類必須要繼承于UiAutomatorTestCase |
SocketServer | handleClientData | | | 讀取socket進來的字串命令信息并轉換成AndroidCommand命令然后調用runCommand命令執行命令進行返回 | |
AndroidComma ndType | | enum AndroidCommandType { ACTION,SHUTDOWN } | | 安卓命令的類型,只有兩種,shutdown的處理方式和普通的action會不一樣 | |
AndroidComma nd | action/getElement | JSONObject json; AndroidCommandType cmdType; | | 從用戶發過來的json命令信息得到真正的命令 | |
CommandHand ler | execute | | | 虛擬類,其他真實CommandHandler如click的父類 | |
AndroidComma ndExecutor | execute | HashMap< String, CommandHan dler> map | | map是所有的命令字串和真實的CommandHandler的一個映射。 其成員函數execute就是通過字串命令找到map對應的handler然后執行的 | |
AndroidComma ndResult | AndroidCommandResult | JSONObject json | | 組織json格式返回值的類 | |
AndroidElement | Click | UiObject el; String id; | | 代表了一個控件 | 其中id是其在AndroidElementsHash維護的elements這個哈希表的key,并非控件id。 |
AndroidElement Hash | addElement | Hashtable< String, AndroidEle ment> elements; | | 維護這個session當前為止碰到過的所有控件的哈希表 | 注意key就是上面AndroidElement的id這個成員變量。每有一個新的控件從appium pc端過來這個值就會加一 |
Click | execute | | CommandHandler | 處理點擊命令的類。 真正執行的是傳進來的AndroidCommand對應UiObject的Click方法 | 其他find,drag,setText等命令同理 |
Strategy | fromString | publicenumStrategy { CLASS_NAME ("class name”),
CSS_SELECT OR("css selector”) , ID(“id"), NAME(“name "), LINK_TEXT( "link text"), PARTIAL_LI NK_TEXT(“p artial link text"), XPATH(“xpa th"), ACCESSIBIL ITY_ID(“ac cessibilit y id”), ANDROID_UI AUTOMATOR( "-android uiautomato r"); | | 查找控件命令的策略類 | find這個CommandHandler會根據用戶給出的不同策略來用不同的方式進行控件查找。比如用xpath的方式和用uiautomator的方式是不一樣的 |
| | | | | |
這里類在我們往下的分析文章中會做進一步的闡述,所以在這里你只需要由一個rough的idea這些類大概是怎么一回事就可以了。
作者 | 自主博客 | 微信 | CSDN |
天地會珠海分舵 | http://techgogogo.com | 服務號:TechGoGoGo 掃描碼: | 向AI問一下細節 免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。 猜你喜歡最新資訊相關推薦相關標簽AI
助 手
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女
|