溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

1 Appium介紹

發(fā)布時(shí)間:2020-07-16 08:39:20 來(lái)源:網(wǎng)絡(luò) 閱讀:267 作者:qq591fbc6cdea9e 欄目:開(kāi)發(fā)技術(shù)

1 Appium概念(官網(wǎng)? ?http://appium.io?? )

? 1)概念:appium是一個(gè)自動(dòng)化測(cè)試開(kāi)源工具,支持IOS、Android平臺(tái)上的原生應(yīng)用、web應(yīng)用和混合應(yīng)用

? 2)原生應(yīng)用:是指使用ios或者android編寫(xiě)的應(yīng)用

? ? ? web應(yīng)用:是指移動(dòng)瀏覽器訪問(wèn)的應(yīng)用,即H5頁(yè)面

? ? ? 混合應(yīng)用:原生代碼和web內(nèi)容交互,即APP內(nèi)嵌的H5頁(yè)面

2?Appium理念

? 1)無(wú)需為了自動(dòng)化而重新編譯或者修改你的應(yīng)用

? ??appium真正的工作引擎是第三方自動(dòng)化框架(例如ios的Uiautomation,Android 4.2+的UiAutomator,Android 2.3+的Instrumentation->Instrumentation由單獨(dú)項(xiàng)目Selendroid支持),這樣就不需要再你的應(yīng)用中植入aooium相關(guān)或者第三方的代碼。

? 2)你不必局限于某種語(yǔ)言或者框架來(lái)寫(xiě)和運(yùn)行測(cè)試腳本

? ??將上述的第三方框架封裝成一套API,webDriver(即Selenium WebDrier)。指定了客戶端到服務(wù)端的協(xié)議。使用這種客戶端-服務(wù)端架構(gòu),就可以使用任何語(yǔ)言來(lái)編寫(xiě)客戶端,向服務(wù)端發(fā)送HTTP請(qǐng)求??蛻舳司褪呛?jiǎn)單的HTTP客戶,你可以使用任何測(cè)試套件或者測(cè)試框架(目前已經(jīng)實(shí)現(xiàn)了大多數(shù)流行語(yǔ)言版本的客戶端)編寫(xiě)刻畫(huà)段的代碼。換句話說(shuō):Appium和webDriver客戶端不是技術(shù)意義上的測(cè)試框架,而是“自動(dòng)化庫(kù)”,你可以在你的測(cè)試環(huán)境中隨意使用這些自動(dòng)化庫(kù)。

? 3)一個(gè)移動(dòng)自動(dòng)化的框架不應(yīng)該在接口上重讀造輪子(移動(dòng)自動(dòng)化的接口應(yīng)該統(tǒng)一)

? ??事實(shí)上webDriver已經(jīng)成為web瀏覽器自動(dòng)化的標(biāo)準(zhǔn),也成了W3C的標(biāo)準(zhǔn),所以Appium擴(kuò)充了webDriver的協(xié)議,在原有的基礎(chǔ)上添加移動(dòng)自動(dòng)化相關(guān)的API

? 4)無(wú)論精神上還是名義上,都必須開(kāi)源

? ??appium是開(kāi)源的

3 Appium幾個(gè)重要的概念

? 1)C/S架構(gòu)

? ??Appium 的核心是一個(gè) web 服務(wù)器,它提供了一套 REST 的接口。它收到客戶端的連接,監(jiān)聽(tīng)到命令,接著在移動(dòng)設(shè)備上執(zhí)行這些命令,然后將執(zhí)行結(jié)果放在 HTTP響應(yīng)中返還給客戶端。事實(shí)上,這種客戶端/服務(wù)端的架構(gòu)給予了許多的可能性:比如我們可以使用任何實(shí)現(xiàn)了該客戶端的語(yǔ)言來(lái)寫(xiě)我們的測(cè)試代碼。比如我們可以把服務(wù)端放在不同 的機(jī)器上。比如我們可以只寫(xiě)測(cè)試代碼,然后使用像 Sauce Labs 這樣的云服務(wù)來(lái)解釋命令。

? 2)Session

? ??自動(dòng)化始終圍繞一個(gè)session進(jìn)行,客戶端初始化一個(gè)seesion(會(huì)話)來(lái)與服務(wù)端交互,不同的語(yǔ)言有不同的實(shí)現(xiàn)方式,但是他們最終都是發(fā)送為一個(gè)POST請(qǐng)求給服務(wù)端,請(qǐng)求中包含一個(gè)JSON對(duì)象,被稱作“desired capabilities”。此時(shí),服務(wù)端就會(huì)開(kāi)啟一個(gè)自動(dòng)化的 session,然后返回一個(gè) session ID,session ID將會(huì)被用戶發(fā)送后續(xù)的命令。

? 3)Desired Capabilities

? ??Desired capabilities 是一些鍵值對(duì)的集合 (比如,一個(gè) map 或者 hash),客戶端將這些鍵值對(duì)發(fā)給服務(wù)端,告訴服務(wù)端我們想要怎么測(cè)試。比如,我們可以把platformName 設(shè)置為 iOS,告訴 Appium 服務(wù)端,我們想要一個(gè)iOS 的 session,而不是一個(gè) Android 的。我們也可以設(shè)置 safariAllowPopups 為 true,確保在 Safari 自動(dòng)化 session 中,我們可以使用 javascript 來(lái)打開(kāi)新窗口。參見(jiàn) capabilities 文檔,查看完整的 capabilities 列表。

? 4)Appium Server

? ??Appium server 是用 Node.js 寫(xiě)的。我們可以用源碼編譯或者從 NPM 直接安裝。

? 5) Appium 服務(wù)端

? ??Appium 服務(wù)端有很多語(yǔ)言庫(kù) Java, Ruby, Python, PHP, JavaScript 和 C#,這些庫(kù)都實(shí)現(xiàn)了 Appium 對(duì) WebDriver 協(xié)議的擴(kuò)展。當(dāng)使用 Appium 的時(shí)候,你只需使用這些庫(kù)代替常規(guī)的 WebDriver 庫(kù)就可以了。

以上內(nèi)容轉(zhuǎn)載至:https://testerhome.com/topics/14772

4 Appium工作原理

? ??Appium是Node.js寫(xiě)的http服務(wù)器,用來(lái)創(chuàng)建和控制webDriver的session。

? ??Appium服務(wù)器接收 json 格式的request請(qǐng)求,根據(jù)不同平臺(tái)對(duì)這些請(qǐng)求采取不同的處理方式。我們執(zhí)行腳本時(shí),腳本會(huì)轉(zhuǎn)換成json數(shù)據(jù),通過(guò)http請(qǐng)求發(fā)送給Appium Server,Appium Server將請(qǐng)求轉(zhuǎn)換成command,發(fā)送給平臺(tái)工具(ios:instruments;android:uiautomator)在設(shè)備上查找Appium 推送上來(lái)的bootstrap.js(bootstrap.js 是Appium架構(gòu) 放在手機(jī)端的一個(gè)服務(wù)器),來(lái)執(zhí)行這些命令。執(zhí)行完后,客戶端將結(jié)果和log發(fā)送回Appium Server。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 Appium介紹


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI