自動化測試_移動端測試(二)—— Appium原理


一、什么是Appium

Appium是一個開源、跨平台的測試框架,可以用來測試原生及混合的移動端應用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire協議,來驅動Apple系統的UIAutomation庫、Android系統的UIAutomator框架。Appium對IOS系統的支持得益於Dan Cuellar’s對於IOS自動化的研究。Appium也集成了Selendroid,來支持老android版本。

Appium支持Selenium WebDriver支持的所有語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api。Appium支持任何一種測試框架。如果只使用Apple的UIAutomation,我們只能用javascript來編寫測試用例,而且只能用Instruction來運行測試用例。同樣,如果只使用Google的UIAutomation,我們就只能用java來編寫測試用例。Appium實現了真正的跨平台自動化測試。

appium選擇了client-server的設計模式。只要client能夠發送http請求給server,那么的話client用什么語言來實現都是可以的,這就是appium及webdriver如何做到支持多語言的;

 

二、Appium的工作原理

2.1 Android

在Android端,appium基於WebDriver協議,利用Bootstrap.jar,最后通過調⽤用UiAutomator的命令,實現App的自動化測試。

UiAutomator測試框架是Android SDK自帶的App UI自動化測試Java庫。

另外由於UiAutomator對H5的支持有限,appium引入了chromedriver以及safaridriver等來實現基於H5的自動化。

appium 在android端工作流
  1. client端也就是我們 test script是我們的webdriver測試腳本。

  2. 中間是起的Appium的服務,Appium在服務端起了一個Server(4723端口),跟selenium Webdriver測試框架類似, Appium⽀持標准的WebDriver JSONWireProtocol。在這里提供它提供了一套REST的接口,Appium Server接收web driver client標准rest請求,解析請求內容,調⽤用對應的框架響應操作。

  3. appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上.Bootstrap監聽4724端口並接收appium 的命令,最終通過調⽤用UiAutomator的命令來實現。

  4. 最后Bootstrap將執行的結果返回給appium server。

  5. appium server再將結果返回給 appium client。

2.2 ios

在IOS端,appium同樣使⽤WebDriver的一套協議。

與Android端測試框架不同的是,appium ios封裝了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自動化測試框架),然后在設備中注⼊入bootstrap.js進⾏行監聽。

appium 在ios端工作流
  1. client端 依然是 test script是我們的webdriver測試腳本。

  2. 中間是起的Appium的服務,Appium在服務端起了一個Server(4723端口),跟selenium Webdriver測試框架類似, Appium⽀持標准的WebDriver JSONWireProtocol。在這里提供它提供了一套REST的接口,Appium Server接收web driver client標准rest請求,解析請求內容,調⽤用對應的框架響應操作。

  3. appium server調用instruments.js 啟動⼀一個socket server,同時分出一個⼦子進程運⾏instruments.app,將bootstrap.js(一個UIAutomation腳本)注⼊入到device⽤於和外界進行交互

  4. 最后Bootstrap.js將執行的結果返回給appium server

  5. appium server再將結果返回給 appium client。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM