ppium簡介及工作原理
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的官網。
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.
二、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端工作流
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。
2.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 JSONWireProtocol。在這裡提供它提供了一套REST的介面,Appium Server接收web driver client標準rest請求,解析請求內容,調⽤用對應的框架響應操作。
appium server呼叫instruments.js 啟動⼀一個socket server,同時分出一個⼦子程式運⾏instruments.app,將bootstrap.js(一個UIAutomation指令碼)注⼊入到device⽤於和外界進行互動
最後Bootstrap.js將執行的結果返回給appium server
appium server再將結果返回給 appium client。
所以我們可以看到android與ios區別在於appium 將請求轉發到bootstrap.js或者bootstrap.jar.然後由bootstrap 驅動UIAutomation和UiAutomator去devices上完成具體的動作。
相關文章
- Thanos工作原理及元件簡介元件
- WebSocket原理及技術簡介Web
- 條形碼生成原理介紹及簡介
- 01 . ELK Stack簡介原理及部署應用
- 【Tomcat】Tomcat工作原理及簡單模擬實現Tomcat
- 學習筆記-React的簡單介紹&工作原理筆記React
- Hive簡介、應用場景及架構原理Hive架構
- SPF 記錄:原理、語法及配置方法簡介
- ProxySQL簡介原理及讀寫分離應用SQL
- metaq原理簡介
- HSF原理簡介
- Flutter原理簡介Flutter
- GC演算法介紹及工作原理和優缺點GC演算法
- 介紹GitOps的工作原理Git
- YUM工作原理及使用
- RabbitMQ系列(二)深入瞭解RabbitMQ工作原理及簡單使用MQ
- Xposed原理簡介及其精簡化
- Varnish(一)簡介與原理
- MySQL原理簡介—9.MySQL索引原理MySql索引
- 04 . Filebeat簡介原理及配置檔案和一些案例
- CRC校驗原理簡介及C程式碼實現說明C程式
- Fiddler(1)基本介紹以及工作原理
- openvas簡介及使用
- Flyway簡介及使用
- springmvc工作原理及原始碼分析SpringMVC原始碼
- Exchanger的工作原理及例項
- Activiti工作流-簡介篇
- 工作流框架Flowable 簡介框架
- 加推時序系統RTS實現原理及應用簡介
- 大資料框架原理簡介大資料框架
- Docker的原理及特性介紹Docker
- 輪換代理IP的工作原理介紹
- PostgreSQL簡介及安裝SQL
- Allure簡介及安裝
- RabbitMQ簡介及安裝MQ
- Django簡介及安裝Django
- Docker簡介及安裝Docker
- logstash簡介及基本操作