簡介
前邊具體操作和實戰已經講解和分享了很多了,但是一些android的一些基礎知識,你又知道多少了,你都掌握了嗎?這篇就由宏哥給小夥伴們既是一個分享,又是對前邊的一次總結。為什麼要對這些做一個簡單的分享了,因為在現實具體工作中經常會遇到這樣的問題,這裡還是通過一個小故事來說明一下。

QA:“那個誰誰誰,我剛剛按照上一次那樣操作這款款APP,我死活是跑不起測試腳本了。(内心獨白:我去,這個奇怪的問題,一定是他給我的安裝包有問題”)
DEV:“嗯?還有這樣的問題,那你看一下你手機和電腦連接配接好了麼?。(内心獨白:一定是資料線沒有連接配接好)”
QA:這個、這個...“咦,這個怎麼看?(内心獨白:我去,我怎麼知道怎麼看了,你不告訴我,我問手機和電腦,他們也不回答我啊)”
DEV:“嗖的一聲,打開指令視窗,用這個指令:adb devices。(内心獨白:鄙視一番,什麼都不懂,這個簡單)”
一會過去了......
QA:滿心歡喜狀,那個誰誰誰“我看了連接配接好了!(内心獨白:一臉淫笑,我連接配接的怎麼可能有問題了)”
DEV:“是不是package或者Activity有問題,你再看看(内心獨白:小樣,自己啥都不看就來問我)”
QA:“寶寶心裡苦,但是寶寶不說!(内心獨白:這個。唉。。。。。。。,我還是不會,硬着頭皮再問開發)”
當你了解掌握android基礎知識之後:
QA:“那個誰誰誰,我剛剛按照上一次那樣操作這款款APP,我死活是跑不起測試腳本了。我也檢視裝置連接配接情況,以及安裝包的package和Activity等等一些東西,和我代碼裡配置的Appium Desired Capabilities參數都正确,你看看是什麼問題吧”
DEV:“厲害了Word哥!這個這個我查一下,是不是安裝包打的包有問題,你稍等一下。(内心獨白:真特麼牛逼,都排查完了,還幫我定位了問題)”
全劇終!
以上雖說是個小故事,但是對于剛入職場的,确實是屢見不鮮,很多很多,如果你很幸運遇到個善良的開發,那還不錯。反之,呵呵,那你就自求多福吧!!!
1、 ADB工具講解
1.1 什麼是ADB呢?
我們不去解釋官方語言的翻譯,給大家說一個通熟易懂的說法,ADB我了解為他就是電腦和手機連接配接的橋梁。此連接配接不是充電的連接配接,大家不要混淆,說他是一個調試工具,可能更貼切。
1.2 ADB有什麼作用呢?
剛說的他是電腦和手機連接配接的橋梁,我們可以通過ADB操作手機,可以管理手機。可能你說這裡手機包括模拟器嘛?答案是肯定的。
1.3 如何使用ADB?
我們在終端直接輸入adb的指令就可以執行相應的操作。在測試過程中我們最常用的就是檢視已經連接配接的android裝置有哪些。大概整理了一下常用的:
1、adb devices 檢視已經連接配接的android裝置
2、adb install Baidu.apk 這個是安裝應用,如果我們目前電腦連接配接了多台android機器時,使用這個指令是不行的,這個時候我們需要指定裝置:adb -s install baidu.apk,這裡的-s是指裝置的資訊,就是通過adb devices 檢視的裝置資訊。
3、adb uninstall Baidu.apk 這個是解除安裝應用
4、adb connect 127.0.0.1:62001這個指令大家一定要記住,連接配接指定裝置資訊,這裡的裝置是指虛拟機,如果說我們使用的虛拟機不是官方的,是國産的天天、夜遊神等等虛拟機你需要使用connect 指令連接配接,這裡的端口号不一定是6555,這個需要根據你的模拟器的品牌來決定。剛學如果搞不定還是建議用真機,隻需要打開adb調試就好。
2、 UIAutomatorviewer工具講解
UIAutomatorviewer是一個定位工具,無論是在windows下還是mac下都可以用時,他在你androidsdk目錄下的tools目錄下,我隻是按照我的給大家講的,下面給大家配置一張圖檔,更加直覺:
可以看一下在我的目錄,在最後的tools目錄下有一個uiautomatorviewer檔案,我們之需要在目前目錄直接敲擊該目錄指令就會打開我們的定位工具界面,下面我們直接看我們的效果圖:
這個前邊介紹過了,宏哥在這裡就不啰嗦了,但是在這裡需要記住一個問題,因為我用的是國産的模拟器,是以在啟動模拟器後需要adb connect 127.0.0.1:xxxx,但是在這個之前你還是需要将模拟器裡面的開發者選項打開的,因為隻有建立連接配接後才能夠使用定位工具,不然會報錯。
我們打開定位工具、模拟器後直接點選定位工具左上角紅色圈出的按鈕(擷取目前螢幕)uiautomatorviewer會自動擷取到目前模拟器所打開的頁面。
最左邊的區域就是捕獲的模拟器頁面,在該頁面滑鼠移到你要查找的元素上面,在整個區域右面上面就是目前對象的一個布局結構,能夠清晰的看見他是采用的是什麼布局。右下角的區域就是我們需要定位的對象的屬性值。
右下角的屬性我做了一個區分,左邊紅色部分為屬性名稱,右邊的則是屬性值,當我在上邊選擇一個控件或者對象的時候下面的屬性就會随着變化,在上圖中的屬性主要是:index、text、resource-id、class、package、content-desc,這些屬性和屬性值他們對應起來就是我們後面要講的頁面元素定位,我們做自動化最主要是和這幾個屬性去互動。這裡需要注意一個問題:這個頁面屬性的text屬性定位方式是針對name定位,但是在新版本appium中已經去掉了name定位,是以大家注意一下這個問題,到時候如果報錯也不要着急。
3 、Package及Activity講解
在整理這個知識的時候其實很糾結是否要講這個知識點,但是權衡了一下決定還是講解一下,不然後面的章節講自動化時可能對于一些無基礎的讀者會有一些莫名其妙。
什麼是Package呢?中文翻譯過來大家都知道是包的意思,其實沒錯,你如果非得這麼了解也沒錯,隻是在我們的app中這個Package是唯一的,就像你身份證号碼一樣。在我們做app自動化時,我們就需要知道他的Package,我們知道了Package那麼也就知道我們需要對哪個app做自動化,現在能了解Package是什麼意思了麼?
什麼是Activity呢?官方給出的解釋Activity是Android組建中最基本也是最為常見用的四大元件之一。看了這個是不是覺得很懵?so,他還有一種不确切的說法,就是和使用者進行互動的,每當使用者打開app進行操作的時候會發現在不斷的跳頁面,其實每個頁面就是一個activity。我們做自動化時拿到了這個app的Package,但是我們還不能啟動起來,因為我們沒有告訴需要去操作哪一個Activity,是以在這個時候我們需要講app啟動時的Activity寫入到啟動參數中,如果你傳入一個其他頁面的是不行的。
4 、package及activity的擷取
前面講了那麼多,但是還不知道怎麼擷取,對吧。哈哈,隻知道作用但是不知道來源這個就沒處使盡。
先說一下擷取package和activity的方法,在網上說了有很多種,這裡我隻給大家說我們常用的。
1、因為自動化一般都是自己的應用,是以這個肯定是自己公司的,那麼你拿這個還不簡單?直接找開發要就行。
2、appium 有界面的用戶端,這檔你在設定裡面選擇了apk的路徑之後系統會自動将該apk的相關資訊展示在下面,是以很簡單,不過悲催的是他不能夠複制,你寫在程式你的時候還是需要你一個一個字母敲擊
3、通過android sdk工具來,在sdk裡面有一個工具,叫做aapt,我們可以直接通過這個工具來,在指令行輸入:aapt dump badging xxxx.apk,後面這個xxx.apk檔案是我們aok所在的絕對路徑,敲入之後那麼可以顯示出來相關資訊,可以在裡面仔細找了,packageName、lanuchActivity這兩個字端,一個在開始1、2行一個在中間部分。如果找不到,在往後邊找一找。
5、小結
好了,宏哥覺得介紹這些應該足夠你用了,這樣你和開發溝通起來也不是那麼費勁,那麼吃力,更不會看到開發鄙視的眼神,有興趣的想了解更多的小夥伴們可以看這裡(傳送門)。
您的肯定就是我進步的動力。支援宏哥的朋友們和宏哥的宏粉記得點波 推薦 哦!!!
個人公衆号
微信群