前言:
之前做APP自動化,使用appium框架時,有理清楚過android的工作流程和原理,找了一遍,發現沒記錄到博客,所以寫下一篇appium工作原理來記錄。
目前Appium框架可以時支持android 和 ios 兩個操作系統的App自動化測試
一、appium-Android工作流
在Android端,appium基於WebDriver協議,利用Bootstrap.jar,最后通過調⽤用UiAutomator的命令,實現App的自動化測試
具體的步驟:
1.客戶端是我們寫的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
二、appium-iOS工作流
在iOS端,appium同樣使⽤WebDriver的一套協議。與Android端測試框架不同的是appium ios封裝了apple的 Instruments框架,主要用了Instrument的UIAutomation(Apple的自動化測試框架),然后在設備中注入bootstrap.js進行監聽。
1.客戶端是我們寫的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。