盤點Selenium和Appium異同點,揭秘二者內部原理!
前段時間學習了selenium的使用,今天開始接觸appium看到appium的原理後產生了疑惑:
現在的selenium是透過webdriver來操作驅動瀏覽器的,然而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可以獲取並呼叫頁面的任何元素,Selenium啟動一個Server,將操作Web元素的API呼叫轉化為一段段JavaScript,在Selenium核心啟動瀏覽器之後注入這段JS
缺點:但是JS注入速度不理想,穩定性大大依賴於Selenium核心對API翻譯成的JS質量高低
引入代理Remote Control Server是因為“同源策略”的限制,透過這個代理伺服器來“欺騙”遠端Server,達到使其以為是從同一個地方load程式碼以正確返回請求資料的效果
seleniumRC的原理
1.Selenium RC Server 啟動一個瀏覽器(或是已經使用中),並注入js程式碼
2.將測試指令碼程式碼傳到客戶端的 Selenium-Core 中
3.Selenium-Core 翻譯並解析執行使用者錄製的操作
4.讓代理 Server 進行通訊
5.Remote Control Server 負責跟遠端 Web 應用伺服器進行通訊
seleniumRC的組成
1.Selenium Server(Launcher、Http Proxy、Selenium Core)
2.Client Libraries(用來控制server)
seleniumRC的工作流程
1.測試用例透過Client Libraries的介面向Selenium Server傳送Http請求,要求和Selenium Server建立連線
2.Selenium Server的Launcher啟動瀏覽器,把Selenium Core載入入瀏覽器頁面中,併發瀏覽器的代理設定為Selenium Server的Http Proxy。
3.測試用例透過Client Libraries的介面向Selenium Server傳送Http請求,Selenium Server對請求進行解析,然後透過Http Proxy傳送JS命令通知Selenium Core執行操作瀏覽器的動作
4.Selenium Core接收到指令後,執行操作
5.瀏覽器收到新的頁面請求資訊,於是傳送Http請求,請求新的web頁面。Selenium Server會接收到所有由它啟動的瀏覽器發動的請求
6.Selenium Server接收到瀏覽器傳送的Http請求後,自己重組Http請求,獲取對應的web頁面
7.Selenium Server的Http Proxy把接收的Web頁面返回給瀏覽器
現在的selenium
selenium3.0以後移除了seleniumRC,取而代之的是webdriver
用一張圖來展示selenium3.0的執行原理
這裡講到的是測試指令碼和瀏覽器的互動,客戶端開始執行驅動瀏覽器的指令碼的時候,這時瀏覽器收到請求開始啟動並開啟偵聽埠,並自動建立session,保持瀏覽器和對應客戶端的會話連線,然後客戶端執行指令碼,向瀏覽器傳送http請求,瀏覽器解析請求,根據指令碼內容做出相應操作,返回response。這時客戶端根據response選擇結束還是繼續執行
tips:
1.webdriver操作瀏覽器、頁面採用的協議:the webdriver wire protocol
2.Client和Server的通訊協議:HTTP
3.HTTP傳輸的資料內容為遵循WP協議json格式資料
4.瀏覽器驅動實現了webdriver協議的api
appium
appium和selenium之間的不同
appium本身就是一個server,而selenium廢棄了server,用webdriver來驅動瀏覽器
appium工作原理
當開啟appium伺服器的同時就開啟了監聽埠;我們執行指令碼的時候,呼叫任何的appiumAPI,都會向Appium Server端post一條HTTP請求,請求內容就是根據webdriver wire protocol協議規定的一條JSON格式的資料;Appium Server端接收到請求後,解析出JSON資料併傳送到 手機 端;手機端上已經由BootStrap.jar(iOS為BootStrip.js)開啟的socket伺服器監聽相應的埠,BootStrap.jar在appium每個session第一次訪問手機端的時候會自動安裝;手機端接收到對應的請求後,透過BootStrap.jar翻譯成UIAutomator能執行的命令,然後透過UIAutomator處理並操作APP完成測試。
appium的幾個概念
1.appium/appium server
一般所說的appium其實是一個基於node.js的web伺服器,它是測試指令碼和裝置端互動的橋樑
用npm install -g appium 安裝的是命令列的沒有介面的appium server
2.appium GUI
它是把沒有介面的appium server封裝出了一個圖形介面,方便操作,但是現在已經被appium desktop所取代
3.appium Desktop
它是一款適用於Mac,Windows和Linux的開源應用程式,它以美觀而靈活的使用者介面為您提供appium server的強大功能
4.appium client
第1點中說到,appium其實是一個sweb server,server是接收請求來操作裝置端的app的,既然有了server那麼一定會有client
這個client就是我們寫測試指令碼時匯入的包
Python中可以執行 pip install Appium-Python-Client 來安裝
Android和 iOS
歡迎加入 51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ 群: 755431660
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2643623/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle與infomix異同點Oracle
- [轉帖]盤點selenium4和selenium3的區別
- truncate,delete,drop的異同點delete
- HTTP協議和HTTPS協議的異同點?HTTP協議
- truncate,delete,drop的異同點(原)delete
- 技術部如何做覆盤——“年終盤點一對一”想要進步的同學
- 中文和英文NLP自然語言處理異同點分析自然語言處理
- JavaScript中var與let的異同點JavaScript
- PostgreSQL 和 MySQL 在用途、好處、特性和特點上的異同MySql
- 技術部如何做覆盤——“年終盤點一對一”之騰訊回來的同學
- Java/.Net雙平臺核心,Jvm和CLR執行異同點JavaJVM
- SQL Azure與SQL Server的異同點總結和歸納SQLServer
- SpringMVC註解和非註解(xml)的方法的異同點SpringMVCXML
- 聊聊叢集、分散式和微服務之間的聯絡和異同點分散式微服務
- 32_分散式文件系統_document查詢內部原理圖解揭秘分散式圖解
- 技術部如何做覆盤——“年終盤點一對一”之自我重新整理3次的同學
- 內部區塊鏈的優缺點區塊鏈
- shell內建命令 #yyds乾貨盤點#
- 30_分散式文件系統_document增刪改內部原理圖解揭秘分散式圖解
- 判斷點是否在多邊形內部斷點
- ICE框架元件內部實現與特點框架元件
- NFC技術與RFID技術有哪些異同點?
- 大廠面試題:ReentrantLock 與 synchronized異同點對比面試題ReentrantLocksynchronized
- async、await和generator函式內部原理AI函式
- JSON資料解析:Gson(谷歌)和fastjson(阿里巴巴)的異同點JSON谷歌AST阿里
- 內部開發者平臺與門戶:二者有何關聯?
- Tap事件和Tap點透原理事件
- 跳槽必看MySQL索引:B+樹原理揭秘與索引優缺點分析MySql索引
- APPIUM+IOS 點選介面元素APPiOS
- appium 點選微信通訊錄APP
- 【計算幾何】點在多邊形內部
- 關於ORACLE點陣圖索引內部淺論Oracle索引
- 浮點數演算法的內部實現演算法
- 一文了解低程式碼與無程式碼:異同點
- python 元組與列表的異同點 1125Python
- DataContractJsonSerializer和JavaScriptSerializer內部實現差異JSONJavaScript
- 什麼是模型? 人工智慧建模和人腦分析建模的異同點 - towardsdatascience模型人工智慧
- JVM 內部原理(一)— 概述JVM