Appium原理精講
目前使用Appium新版本和舊版本的企業數目都很多,而兩個版本的安裝過程和api的使用又有較大的區別。但是無論表面上的東東如何變化,內部原理都是一樣的。在這里我給大家介紹一下appium的核心,增進大家對它的理解,相信這會對大家后期的使用有很大的幫助。
Appium概念
Appium是一個開源、跨平臺的自動化測試工具,用于測試原生和輕量移動應用,支持 iOS, Android 和 FirefoxOS 平臺。Appium
驅動蘋果的 UIAutomation 庫和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 協議。Appinm 的 iOS 支持是基于 Dan Cuellar's 的 iOS Auto. Appium 同時綁定了Selendroid 用于老的 Android 平臺測試(SDK < 16)。
官網:http://appium.io/
Github:https://github.com/appium/appium
特性
1. 跨平臺, native/ hybrid/ webview(H5)
2. 跨設備, android/iOS
3. 跨app,可以在多個app之間交互
4. 不依賴APP開源代碼
5. 支持Selenium WebDriver / Selenium Grid
6. 跨語言, java/python/ruby
7. Open Source
框架介紹
Appium是由nodejs的express框架寫的HttpServer。Appium不是它??創建?套新的測試框架,是將現有的優秀的框架進行了集成,以Selenium
WebDriver的協議(JsonWireProtocol/Restful web service)統?起來.使得這個框架滿?多??的需求。Appium啟動自動化測試后,在被測設備上啟動?個server,監聽來? Appium server的指令。不同的平臺(如IOS,Android)采?不同的運?和交換?式。Appium將某個樁程序“侵入”平臺,用于接受指令,來完成測試腳本的運行。在Android端,appium基于WebDriver,并利用Bootstrap.js,最后通過調?用UiAutomator的命令,實現App的自動化測試。另外由于UiAutomator對H5的支持有限,appium引入了chromedriver來實現基于H5的自動化。
原理圖(Android)
分析:
1.左邊的Code(WebDriver script)是我們的appium測試腳本。
2.中間是開起的Appium的服務(不同的系統需要安裝與之對應的Appium server,這也就是appium可以同時支持android、ios以及windows應用進行自動化測試的原因。在這里以android為例進行說明)Appium在這邊起了一個Server(4723端口),跟selenium Webdriver測試框架類似,Appium支持標準的WebDriver JSONWireProtocol。在這里提供了一套web服務,Appium Server接收webdriver標準請求,解析請求內容,調?用對應的框架響應操作。如:腳本發送一個點擊按鈕的請求給appium server。
3. appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上。Bootstrap接收 appium 的命令(4724端口),最終通過調?用UiAutomator的命令來實現。
4.最后執? 的結果由Bootstrap返回給appium server。
5.另外,appium還用到了chromedriver來支持基于H5(webview)的測試。