這篇文章給大家分享的是有關(guān)Selenium和Appium有哪些異同點的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出淄川免費做網(wǎng)站回饋大家。
前段時間學習了selenium的使用,今天開始接觸appium看到appium的原理后產(chǎn)生了疑惑:
現(xiàn)在的selenium是通過webdriver來操作驅(qū)動瀏覽器的,然而appium有一個server的概念
那么為什么沒有app driver這個東西呢?
selenium
早期的selenium
早期的selenium主要是指selenium1.0的版本,
這個版本主要由Selenium IDE + Selenium Grid + SeleniumRC組成
seleniumRC就是后來被webdriver取代的一個代理server
RC == Remote Control 遠程控制
早期Selenium 引入了 Remote Control Server 這樣一個代理 Server,JavaScript 腳本注入和與 Server 通訊都通過這個代理 Server 來進行,JavasScript可以獲取并調(diào)用頁面的任何元素,Selenium啟動一個Server,將操作Web元素的API調(diào)用轉(zhuǎn)化為一段段JavaScript,在Selenium內(nèi)核啟動瀏覽器之后注入這段JS
缺點:但是JS注入速度不理想,穩(wěn)定性大大依賴于Selenium內(nèi)核對API翻譯成的JS質(zhì)量高低
引入代理Remote Control Server是因為“同源策略”的限制,通過這個代理服務(wù)器來“欺騙”遠程Server,達到使其以為是從同一個地方load代碼以正確返回請求數(shù)據(jù)的效果
seleniumRC的原理
1.Selenium RC Server 啟動一個瀏覽器(或是已經(jīng)使用中),并注入js代碼
2.將測試腳本代碼傳到客戶端的 Selenium-Core 中
3.Selenium-Core 翻譯并解析執(zhí)行用戶錄制的操作
4.讓代理 Server 進行通訊
5.Remote Control Server 負責跟遠程 Web 應(yīng)用服務(wù)器進行通訊
seleniumRC的組成
1.Selenium Server(Launcher、Http Proxy、Selenium Core)
2.Client Libraries(用來控制server)
seleniumRC的工作流程
1.測試用例通過Client Libraries的接口向Selenium Server發(fā)送Http請求,要求和Selenium Server建立連接
2.Selenium Server的Launcher啟動瀏覽器,把Selenium Core加載入瀏覽器頁面中,并發(fā)瀏覽器的代理設(shè)置為Selenium Server的Http Proxy。
3.測試用例通過Client Libraries的接口向Selenium Server發(fā)送Http請求,Selenium Server對請求進行解析,然后通過Http Proxy發(fā)送JS命令通知Selenium Core執(zhí)行操作瀏覽器的動作
4.Selenium Core接收到指令后,執(zhí)行操作
5.瀏覽器收到新的頁面請求信息,于是發(fā)送Http請求,請求新的web頁面。Selenium Server會接收到所有由它啟動的瀏覽器發(fā)動的請求
6.Selenium Server接收到瀏覽器發(fā)送的Http請求后,自己重組Http請求,獲取對應(yīng)的web頁面
7.Selenium Server的Http Proxy把接收的Web頁面返回給瀏覽器
現(xiàn)在的selenium
selenium3.0以后移除了seleniumRC,取而代之的是webdriver
用一張圖來展示selenium3.0的運行原理
這里講到的是測試腳本和瀏覽器的交互,客戶端開始運行驅(qū)動瀏覽器的腳本的時候,這時瀏覽器收到請求開始啟動并開啟偵聽端口,并自動創(chuàng)建session,保持瀏覽器和對應(yīng)客戶端的會話連接,然后客戶端運行腳本,向瀏覽器發(fā)送http請求,瀏覽器解析請求,根據(jù)腳本內(nèi)容做出相應(yīng)操作,返回response。這時客戶端根據(jù)response選擇結(jié)束還是繼續(xù)執(zhí)行
tips:
1.webdriver操作瀏覽器、頁面采用的協(xié)議:the webdriver wire protocol
2.Client和Server的通信協(xié)議:HTTP
3.HTTP傳輸?shù)臄?shù)據(jù)內(nèi)容為遵循WP協(xié)議json格式數(shù)據(jù)
4.瀏覽器驅(qū)動實現(xiàn)了webdriver協(xié)議的api
appium
appium和selenium之間的不同
appium本身就是一個server,而selenium廢棄了server,用webdriver來驅(qū)動瀏覽器
appium工作原理
當開啟appium服務(wù)器的同時就開啟了監(jiān)聽端口;我們運行腳本的時候,調(diào)用任何的appiumAPI,都會向Appium Server端post一條HTTP請求,請求內(nèi)容就是根據(jù)webdriver wire protocol協(xié)議規(guī)定的一條JSON格式的數(shù)據(jù);Appium Server端接收到請求后,解析出JSON數(shù)據(jù)并發(fā)送到手機端;手機端上已經(jīng)由BootStrap.jar(iOS為BootStrip.js)開啟的socket服務(wù)器監(jiān)聽相應(yīng)的端口,BootStrap.jar在appium每個session第一次訪問手機端的時候會自動安裝;手機端接收到對應(yīng)的請求后,通過BootStrap.jar翻譯成UIAutomator能執(zhí)行的命令,然后通過UIAutomator處理并操作APP完成測試。
appium的幾個概念
1.appium/appium server
一般所說的appium其實是一個基于node.js的web服務(wù)器,它是測試腳本和設(shè)備端交互的橋梁
用npm install -g appium 安裝的是命令行的沒有界面的appium server
2.appium GUI
它是把沒有界面的appium server封裝出了一個圖形界面,方便操作,但是現(xiàn)在已經(jīng)被appium desktop所取代
3.appium Desktop
它是一款適用于Mac,Windows和Linux的開源應(yīng)用程序,它以美觀而靈活的用戶界面為您提供appium server的強大功能
4.appium client
第1點中說到,appium其實是一個sweb server,server是接收請求來操作設(shè)備端的app的,既然有了server那么一定會有client
這個client就是我們寫測試腳本時導入的包
Python中可以運行 pip install Appium-Python-Client 來安裝
Android和 iOS
感謝各位的閱讀!關(guān)于“Selenium和Appium有哪些異同點”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!