瞭解appium自動化的工作原理 (轉載)

本文爲轉載,原文地址:https://blog.csdn.net/jffhy2017/article/details/69220719

通過這篇文章記錄學習分享一下。

一、Appium加載的過程圖解

 

Appium的加載過程

1)調用Android adb完成基本的系統操作

2)Android上部署bootstrap.jar

3)Bootstrap.jar Forward Android的端口到PC機器上

4)Pc上監聽端口接收請求,使用webdriver協議

5)分析命令並通過forward的端口發給bootstrap.jar

6)Bootstrap.jar接收請求並把命令發給uiautomator

7)Uiautomator執行命令

 

二、初步認識appium工作過程

1.appiumc/s模式的 
2.appium是基於webdriver協議添加對移動設備自動化api擴展而成的,所以具有和webdriver一樣的特性,比如多語言支持 
3.webdriver是基於http協議的,第一連接會建立一個session會話,並通過post發送一個json告知服務端相關測試信息 
4.對於android來說,4.2以後是基於uiautomator框架實現查找注入事件的,4.2以前則是instrumentation框架的,並封裝成一個叫Selendroid提供服務 
5.客戶端只需要發送http請求實現通訊,意味着客戶端就是多語言支持的 
6.appium服務端是node.js寫的,所以你安裝的時候無論哪個平臺都是先裝node,然後npm install -g appium安裝(翻牆牆)

 

三、bootstrap介紹

1Bootstrap作用:

BootstrapAppium運行在安卓目標測試機器上的一個UiAutomator測試腳本,該腳本的唯一一個所做的事情是在目標機器開啓一個socket服務器來把一個sessionAppiumPC端過來的命令發送給UiAutomator來執行處理。

它會監聽4724端口獲得命令然後passUiAutomator來做處理。

 

2Bootstrapappium中扮演的角色:

首先,Bootstrapuiautomator的測試腳本,它的入口類bootstrap繼承於UiautomatorTestCase,所以Uiautomator可以正常運行它,它也可以正常使用uiautomator的方法,這個就是appium的命令可以轉換成uiautomator命令的關鍵;

其次,bootstrap是一個socket服務器,專門監聽4724端口過來的appium的連接和命令數據,並把appium的命令轉換成uiautomator的命令來讓uiautomator進行處理;

最後,bootstrap處理的是從pc端過來的命令,而非一個文件。

 

四、所使用的技術

Android上使用了instrumentationuiautomator兩套技術

iOS使用uiautomation

同時還支持firefox, 並可擴展其他平臺

默認開啓4723端口接受webdriver請求 4723appium服務的,專門和腳本打交道;

默認開啓4724用於和Android設備通訊

 

五、Capabilities

Capabilities是由客戶端發送給Appium服務器端的用來告訴服務器去啓動哪種我們想要的會話的一套鍵值對集合。當中也有一些鍵值對是用來在自動化的過程中修改服務器端的行爲方式。

 

六、自我理解的工作原理

Appium啓動時會創建一個http127.0.0.1:4723/wd/hub服務端(相當於一箇中轉站),腳本會告訴服務器我要做什麼,服務端再去跟設備打交道,服務端完成了腳本交給他的任務之後

服務端和設備如何通訊?

服務端和設備默認使用4724端口進行通訊的,底層調用uiautomator工具,在測試的時候服務端會給設備扔一個jar包就是appiumbootstrap.jar,會啓動這個包,啓動之後會在手機上創建一個socket服務,暴露的就是4724的端口;相對於socket服務來說,appium服務端又是一個客戶端;

服務端的4724可以修改,設備上的不可以;服務端收到腳本傳遞過來的命令之後,通過電腦上的4724端口,想設備上的4724端口發送指令,appiumbootstrap.jar收到指令後回去完成點擊,滑動其他的操作,完成之後再通過服務給服務端一個相應。服務端收到之後再去相應腳本

 

服務端和腳本如何通訊?

通過接口來訪問,意味着服務端和腳本可以不在一起,只要能訪問到127.0.0.1:4723這個地址就可以


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章