申請:本文介紹主要是針對Android.java
1.什麼是Appium:web
Appium是一個開源、跨平臺的測試框架,能夠用來測試原生及混合的移動端應用。Appium支持IOS、Android及FirefoxOS平臺。Appium使用WebDriver的json wire協議,來驅動Android系統的UIAutomator框架。chrome
Appium支持Selenium WebDriver支持的全部語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更能夠使用Selenium WebDriver的Api。可實現跨平臺自動化測試。json
Appium選擇了client-server的設計模式。只要client可以發送http請求給server,那麼的話client用什麼語言來實現都是能夠的,這就是appium及webdriver如何作到支持多語言的。設計模式
官方介紹:app
Appium is an open-source tool you can use to automate mobile native, mobile web, and mobile hybrid applications on iOS and Android platforms. 「Mobile native apps」 are those written using the iOS or Android SDKs. 「Mobile web apps」 are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome on Android). 「Mobile hybrid apps」 have a native wrapper around a 「webview」 – a native control that enables interaction with web content. Projects like Phonegap, for example, make it easy to build apps using web technologies that are then bundled into a native wrapper – these are hybrid apps. Importantly, Appium is 「cross-platform」: it allows you to write tests against multiple platforms (iOS, Android), using the same API. This enables a large or total amount of code reuse between iOS and Android testsuites.框架
2.Appium的工做原理:測試
在Android端,appium基於WebDriver協議,利用Bootstrap.jar,最後經過調⽤用UiAutomator的命令,實現App的自動化測試。ui
原理簡圖以下:spa
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 JSONWireProtocol。在這裏提供它提供了一套REST的接口,Appium Server接收web driver client標準rest請求,解析請求內容,調⽤用對應的框架響應操做。
appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上的Bootstrap監聽4724端口並接收appium 的命令,最終經過調⽤用UiAutomator的命令來實現(自動化測試)。
而後Bootstrap將執行的結果返回給appium server。
最後appium server再將結果返回給 appium client(測試結果)。