[Appium] Appium 自動(dòng)化測(cè)試框架原理介紹

Appium

Appium是一個(gè)開源測(cè)試自動(dòng)化框架,可用于原生,混合和移動(dòng)Web應(yīng)用程序測(cè)試。 它使用WebDriver協(xié)議驅(qū)動(dòng) iOS ,Android和Windows應(yīng)用程序。

Appium設(shè)計(jì)哲學(xué)

不需要為了自動(dòng)化而且重新編譯或修改測(cè)試 app;
不應(yīng)該讓移動(dòng)端自動(dòng)化測(cè)試限定在某種語(yǔ)言和某個(gè)具體的框架
不要為了移動(dòng)端的自動(dòng)化測(cè)試而重新發(fā)明輪子
移動(dòng)端自動(dòng)化測(cè)試應(yīng)該是開源的。

Appium 特點(diǎn)

跨架構(gòu),native hybrid webview
跨設(shè)備,android ios firefoxos
跨語(yǔ)言,java python ruby nodejs php
跨 app, 可以在多個(gè) app 之間交互
不依賴源代碼
不限制測(cè)試框架和平臺(tái)

主流框架比較

image.png

Appium Android Arch

image.png

1.appium客戶端就是我們所說(shuō)的自動(dòng)化腳本代碼,支持Java\Python等主流編程語(yǔ)言
2.appium服務(wù)端由兩個(gè)作用:1. 連接設(shè)備 2. 接收客戶端發(fā)送過(guò)來(lái)的HTTP請(qǐng)求并發(fā)送到移動(dòng)設(shè)備上執(zhí)行。其中服務(wù)端需要安裝在PC上,并且在客戶端運(yùn)行代碼之前啟動(dòng)。服務(wù)端由node.js編寫,在運(yùn)行時(shí),通過(guò)建立session與手機(jī)終端進(jìn)行交互。
3.移動(dòng)終端,通過(guò)接收appium服務(wù)端發(fā)送過(guò)來(lái)的指令,執(zhí)行app自動(dòng)化測(cè)試。

Appium IOS Arch

image.png

Appium 執(zhí)行流程

image.png

1、client端也就是我們 test script是我們的webdriver測(cè)試腳本。
2、中間是起的Appium的服務(wù),Appium在服務(wù)端起了一個(gè)Server(4723端口),跟selenium Webdriver測(cè)試框架類似, Appium?持標(biāo)準(zhǔn)的
WebDriver JSON WireProtocol。在這里提供它提供了一套R(shí)EST的接口,Appium Server接收web driver client標(biāo)準(zhǔn)rest請(qǐng)求,解析請(qǐng)求內(nèi)容,調(diào)?用
對(duì)應(yīng)的框架響應(yīng)操作。
3、Appium server會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給中間件Bootstrap.jar 它是用java寫的,安裝在手機(jī)上.Bootstrap監(jiān)聽4724端口并接收appium的命令,最終通過(guò)調(diào)
?用UiAutomator的命令來(lái)實(shí)現(xiàn)。
4、最后Bootstrap將執(zhí)行的結(jié)果返回給appium server。
5、Appium server再將結(jié)果返回給 appium client。

Appium 重要概念

Appium的客戶端和服務(wù)端之間進(jìn)行通信都必須在一個(gè)Session的上下文中進(jìn)行。

客戶端在發(fā)起通信的時(shí)候首先會(huì)發(fā)送一個(gè)叫作“Desired Capabilities”的JSON對(duì)象給服務(wù)器。服務(wù)器收到該數(shù)據(jù)后,會(huì)創(chuàng)建一個(gè)session并將session的ID返回到客戶端,之后客戶端可以用該session的ID發(fā)送后續(xù)的命令。

Capability
Capability的功能是配置Appium會(huì)話。

他們告訴Appium服務(wù)器您想要自動(dòng)化的平臺(tái)和應(yīng)用程序。DesiredCapabilities是一組設(shè)置的鍵值對(duì)的集合,其中鍵對(duì)應(yīng)設(shè)置的名稱,而值對(duì)應(yīng)設(shè)置的值。(如:"platformName": "Android")DesiredCapabilities主要用于通知Appium服務(wù)器建立需要的Session。
http://appium.io/docs/cn/writing-running-appium/caps/#android

Appium API

https://appium.io/docs/en/about-appium/api/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容