web自動化原理揭秘

2022-07-06 13:33:08 字數 2500 閱讀 6513

做過兩年自動化測試的小夥伴說web自動化測試真的不難,無非就是一些瀏覽器操作,頁面元素操作,常規的情況很容易處理,再學一學特殊元素的處理,基本就能應付專案的測試了。

這個話倒沒錯,但是真正要學好自動化測試,深入自動化,並不是那麼簡單。首先你得懂原理吧,原理不懂,你就不知道怎麼解決一些異常情況,也無法完成拓展。其次你得學會寫自己的測試框架吧,乙個專案寫了100個測試類,都是零散的指令碼,沒有任何設計而言,都是純粹的業務**,那我可以說,換了專案你這些指令碼就成了垃圾,因此,我們要做自動化,要成為自動化大牛,就一定要花時間去要搞清楚自動化實現的原理,並且學會自己去實現自動化測試框架,乃至於自動化測試平台。

下面一段**實現了乙個很簡單的功能:

1.開啟瀏覽器

2.訪問頁面「

3.定位到頁面的搜尋框

4.輸入查詢資料

5.定位搜尋按鈕

**如下圖:

驅動檔案位置:

需求很簡單,**也很簡單。但是你知道**中的這些瀏覽器操作,元素操作,是如何完成的嗎?

比如,瀏覽器啟動完成後,再呼叫:driver.get("");就能在導航欄中訪問到指定的這個頁面,這個裡面發生了什麼,到底是客戶端指令碼直接操作瀏覽器還是通過某些中介軟體來完成??

底層原理如下:

1.在自動化測試過程中,存在三部分元件:客戶端指令碼+驅動+瀏覽器終端。

2.驅動檔案,以geckodriver.exe為例,這個可執行的驅動檔案啟動後,相當於乙個暴露了一系列介面的伺服器,監聽某一埠,例如:89890。

3.客戶端的操作(訪問頁面,定位元素,輸入資料,點選按鈕等)都是封裝成了介面請求(eg:/session/xx/yy),然後提交到驅動伺服器。

4.驅動伺服器接收到客戶端的請求後,再跟終端瀏覽器互動。

5.終端瀏覽器做出相應操作。

下圖描述了整個互動過程:

以定位元素為例,定位搜尋框,我們來看底下這行**在執行的時候底層到底經歷了些什麼:

實際,底層請求時,每個請求會被封裝為乙個command,然後根據不同的commannd封裝得到不同的httprequest物件:

拿到此介面位址封裝為乙個httprequest請求。

client.execute(httprequest,true),執行介面呼叫:

至於其他操作:往輸入框輸入資料,點選按鈕等,都是對應乙個介面位址,通過呼叫介面,請求驅動來處理,最後驅動同瀏覽器進行互動,瀏覽器按照指示做出對應操作。

另外,可能會有人好奇,驅動伺服器是何時啟動的服務。其實是在執行下面這行**的時候啟動的,大家可執行去debug除錯selenium的底層**

//

建立火狐驅動物件

webdriver driver = new firefoxdriver();

當上面這行**執行完,可以發現eclipse的控制台顯示了如下資訊:

1531911173760    geckodriver    info    geckodriver 0.19.0

1531911173772 geckodriver info listening on 127.0.0.1:21984

說明此驅動伺服器成功啟動了,並且監聽了本機的21984埠,等待客戶端發起請求,並處理。

自動化測試 web自動化測試

自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...

自動化原理

自動化程式 自動化程式是由我們來開發的,實現具體的 手機自動化 功能。要發出具體的指令控制手機,也需要使用 客戶端庫。我們需要安裝好客戶端庫,呼叫這些庫,就可以發出自動化指令給手機。手機裝置 我們這裡說的手機裝置,其實不僅僅是手機,包括所有 蘋果 安卓的移動裝置,比如 手機 平板 智慧型手錶等。手機...

web自動化測試

1.環境搭建 win10 64bit selenium2.53.6版本 安裝方法 pip install selenium 2.53.6 瀏覽器搭載三個 chrome 49版本 driver2.22 ie 11版本 driver2.5 firefox 44版本 在pycharm中關聯電腦本身安裝的工...