1、Appium測試環境搭建整體思路
(1)Android測試環境搭建
Android測試環境需要搭建三個環境,Java,AndroidSDK,Android模擬器。
為什麼要安裝這三個環境?
- Java:Android的應用程式層使用的語言是Java,所以需要使用Java環境。
- AndroidSDK:Android SDK給你提供開發、測試所必須的Android API類庫。
- Android模擬器:實際上就是一臺手機,方便我們給大家展示效果。
(2)Appium測試環境搭建
Appium測試環境需要搭建:
- Appium Server:
是Appium的核心,提供了一組REST API的Web伺服器。
Appium收到客戶端的連線、監控命令,之後在移動裝置上執行這些命令,最後把執行結果放在HTTP響應中返回給客戶端。
可以通過Node.js
安裝,也可以通過Appium Desktop啟動Appium Server服務。 - Appium Clients:
Appium官方提供了一套Appium client
,涵蓋多種語言Ruby/Java/Python
等,
在測試的時候,一般要使用這些client庫去替換原生的webdriver庫。
讓我們可以更方便的寫出可讀性更好的測試用例。 - Devices:
就是我們的移動裝置,可以是真實的手機,或者是電腦上的Android模擬器。
(Android模擬器我們在上一步就完成了)
(3)測試指令碼語言的環境搭建
例如:Pyhton、Java等開發環境。
要使用Pyhton語言寫我們的測試指令碼,就搭建Python語言的開發環境,包括開發工具。
要使用Java語言寫我們的測試指令碼,就搭建Java語言的開發環境,包括開發工具。
2、Appium在Android端和IOS端的工作流程
(1)Android端
在Android端,Appium基於WebDriver協議,利用Bootstrap.jar
,最後通過調⽤用UiAutomator
的命令,實現App的自動化測試。
UiAutomator
測試框架是Android SDK
自帶的App UI自動化測試Java庫。
另外由於UiAutomator
對H5的支援有限,Appium引入了chromedriver
以及safaridriver
等來實現基於H5的自動化。
Appium 在Android端工作流:
- client端也就是我們
test script
(webdriver測試指令碼)。 - 中間是起動的Appium的服務,Appium在服務端起了一個Server(4723埠),跟Selenium Webdriver測試框架類似, Appium支援標準的
WebDriver JSON Wire Protocol
。
在這裡提供它提供了一套REST的介面,Appium Server接收webdriver client標準rest請求,解析請求內容,呼叫對應的框架響應操作。 - Appium Server會把請求轉發給中介軟體
Bootstrap.jar
,它是用Java寫的,安裝在手機上的Bootstrap監聽4724埠並接收Appium的命令,最終通過調⽤用UiAutomator
的命令來實現。 - 最後
Bootstrap
將執行的結果返回給Appium Server。 - Appium Server再將結果返回給Appium Client。
(2)iOS端
在iOS端,Appium同樣使用WebDriver的一套協議。
與Android端測試框架不同的是,Appium iOS封裝了Apple的Instruments
框架,主要用了Instrument
裡的UI Automation
(Apple的自動化測試框架),然後在裝置中注入bootstrap.js
進行監聽。
Appium 在iOS端工作流:
- Client端 依然是
test script
(webdriver測試指令碼)。 - 中間是起動的是Appium的服務,Appium在服務端起了一個Server(4723埠),跟Selenium Webdriver測試框架類似,Appium支援標準的
WebDriver JSON Wire Protocol
。
在這裡提供它提供了一套REST的介面,Appium Server接收webdriver client標準rest請求,解析請求內容,呼叫對應的框架響應操作。 - Appium Server呼叫
instruments.js
啟動⼀一個socket server,同時分出一個子程式執行instruments.app
,將bootstrap.js
(一個UIAutomation
指令碼)注入到device用於和外界進行互動 - 最後
Bootstrap.js
將執行的結果返回給Appium Server - Appium Server再將結果返回給 Appium Client。
(3)總結
所以我們可以看到Android與iOS區別在於Appium將請求轉發到bootstrap.js
或者bootstrap.jar
。
然後由bootstrap驅動UIAutomation
和UiAutomator
去Devices上完成具體的動作。
如下圖所示:
3、ADB執行原理和Appium執行原理
(1)ADB原理
ADB原理簡易模型圖 (跟著12345步驟走),如下圖所示:
(2)ADB實際操作原理參考圖
如下圖所示:
(3)Appium原理
Appium簡易原理圖(跟著序號12345678走),如下圖所示:
(4)Appium原理實際參考圖( 結合簡易原理圖 )
如下圖所示:
參考: