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工作原理及元件簡介元件
- MapReduce工作原理流程簡介
- HttpSession工作原理簡介HTTPSession
- WebSocket原理及技術簡介Web
- android IPC及原理簡介Android
- 01 . ELK Stack簡介原理及部署應用
- JVM 垃圾回收器工作原理及使用例項介紹JVM
- 學習筆記-React的簡單介紹&工作原理筆記React
- ProxySQL簡介原理及讀寫分離應用SQL
- Hive簡介、應用場景及架構原理Hive架構
- SPF 記錄:原理、語法及配置方法簡介
- Flutter原理簡介Flutter
- metaq原理簡介
- HSF原理簡介
- YUM工作原理及使用
- GC演算法介紹及工作原理和優缺點GC演算法
- Apache kafka 工作原理介紹ApacheKafka
- Ceph分散式儲存-原理介紹及簡單部署分散式
- 【Tomcat】Tomcat工作原理及簡單模擬實現Tomcat
- RabbitMQ系列(二)深入瞭解RabbitMQ工作原理及簡單使用MQ
- Turbo碼原理簡介
- Spring原理簡介Spring
- 介紹GitOps的工作原理Git
- Xposed原理簡介及其精簡化
- Varnish(一)簡介與原理
- Exchanger的工作原理及例項
- Java ArrayDeque工作原理及實現Java
- Java HashMap工作原理及實現JavaHashMap
- Tomcat的簡單工作原理Tomcat
- 04 . Filebeat簡介原理及配置檔案和一些案例
- CRC校驗原理簡介及C程式碼實現說明C程式
- Flyway簡介及使用
- openvas簡介及使用
- IText簡介及示例
- openfiler簡介及概述
- vnc簡介及配置VNC
- Activiti工作流-簡介篇
- 防火牆模式工作模式簡介防火牆模式