Postman接口測試實現UI自動化測試

Selenium底層原理

3天精通Postman接口測試,全套項目實戰教程!!

運行代碼,啟動瀏覽器后,webdriver會將瀏覽器綁定到特定的端口,作為webdriver的remote server(遠程服務端),而client(客戶端,也就是測試腳本,可以是Python或者Java代碼)會借助CommandExecutor創建sessionId,發送http請求給remote server,remote server收到http請求后,調用webdriver完成操作,并將http響應結果返回給client。

所以,本質上是調用http請求的過程,因此也就可以理解為什么可以使用Postman實現UI自動化測試。

Postman實現UI自動化測試

以上我們知道了Selenium的底層原理其實就是調用http請求的過程,那么我們要想調用接口就需要知道接口信息,包括請求方式、請求地址、請求參數、請求格式等。

這些接口信息,我們可以通過對源碼的分析得到。

運行chromedriver.exe

Selenium腳本:

from selenium import webdriver
driver = webdriver.Chrome()

執行上述代碼,程序會打開Chrome瀏覽器。(前提:已經正確配置了Chrome驅動和對應的版本)

那么,Selenium是如何實現這一過程的呢?

源碼分析:

D:\Python3\Lib\site-packages\selenium\webdriver\chrome\webdriver.py

我們可以看到它執行了一個cmd命令,這個命令主要是啟動chromedriver.exe瀏覽器驅動,我們每次執行腳本前,程序會自動幫我們啟動瀏覽器驅動。

由于我們跳過了代碼腳本,因此需要手動啟動瀏覽器驅動。

地址及端口號:127.0.0.1:9515

新建瀏覽器會話

D:\Python3\Lib\site-packages\selenium\webdriver\remote\webdriver.py

繼續查看源碼,這里有一行重要的代碼:

start_session()這個方法是向地址http://127.0.0.1:9515/session發送了一個post請求,參數是JSON格式,然后返回一個特定的響應信息給程序,主要就是新建了一個sessionId。

接口信息:

url: /session
method: POST
content_type: application/json

請求參數:

{"capabilities": {"browserName": "chrome"}
}

調用接口:

訪問目標網站

Selenium腳本:

driver.get("https://www.baidu.com")

執行以上代碼,可以訪問目標網站。

源碼分析:

D:\Python3\Lib\site-packages\selenium\webdriver\remote\remote_connection.py

在RemoteConnection這個類中,定義了所有selenium操作需要的接口地址(這些接口地址全部封裝在瀏覽器驅動程序中)。

其中Command.GET: ("POST", "/session/$sessionId/url")這個地址就是實現訪問一個網站的URL。

緊接著,可以看到主要是通過execute()方法調用_request()方法通過urllib3標準庫向服務器發送對應操作請求地址,進而實現瀏覽器各種操作。

打開瀏覽器操作瀏覽器實現各種動作是通過上一步新建瀏覽器會話返回的sessionId實現的關聯。你也會發現后面操作的各種接口地址中都存在一個$sessionId,以達到能夠在同一個瀏覽器中做操作。

接口信息:

url: /session/$sessionId/url
method: POST
content_type: application/json

請求參數:

{"url": "目標網站地址"
}

調用接口:

窗口最大化

Selenium腳本:

driver.maximize_window()

源碼分析:

接口信息:

url: /session/$sessionId/window/maximize
method: POST
content_type: application/json

調用接口:

元素定位

Selenium腳本:

driver.find_element(By.XPATH, "//input[@id='kw']")

源碼分析:

接口信息:

url: /session/$sessionId/element
method: POST
content_type: application/json

請求參數:

{"using": "xpath", // 定位方式"value": "//input[@id='kw']" // 值
}

接口調用:

輸入文本

Selenium腳本:

driver.find_element(By.XPATH, '//input[@type="text"]').send_keys("測試蔡坨坨")

源碼分析:

接口信息:

url: /session/$sessionId/element/$id/value
method: POST
content_type: application/json

請求參數:

{"text": "測試蔡坨坨"
}

接口調用:

點擊元素

Selenium腳本:

driver.find_element(By.XPATH, "//input[@id='su']").click()

源碼分析:

接口信息:

url: /session/$sessionId/element/$id/click
method: POST
content_type: application/json

接口調用:

關閉瀏覽器

Selenium腳本:

driver.quit()

源碼分析:

接口信息:

url: /session/$sessionId
method: DELETE
content_type: application/json

接口調用:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89194.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS動畫與變換全解析:從原理到性能優化的深度指南

引言:現代Web動畫的技術革命 在當今的Web體驗中,流暢的動畫效果已成為用戶交互的核心要素。根據Google的研究,60fps的動畫可以使用戶參與度提升53%,而卡頓的界面會導致跳出率增加40%。本文將深入剖析CSS動畫(animation…

NPM組件 @ivy-shared-components/iconslibrary 等竊取主機敏感信息

【高危】NPM組件 ivy-shared-components/iconslibrary 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 ivy-shared-components/iconslibrary 等NPM組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-zh19-e78w…

Fail2ban防止暴力破解工具使用教程

Fail2ban防止暴力破解工具使用教程場景Fail2ban安裝和配置安裝配置原理遇到的問題以及解決辦法問題1:設置的策略是10分鐘內ssh連接失敗2次的ip進行封禁,日志中實際卻出現4次連接。問題2:策略設置為1分鐘內失敗兩次,封禁ip。但通過…

亞遠景科技助力長城汽車,開啟智能研發新征程

亞遠景科技助力長城汽車,開啟智能研發新征程在汽車智能化飛速發展的當下,軟件研發管理成為車企決勝未來的關鍵。近日,亞遠景科技胡浩老師應邀為長城汽車開展了一場主題深刻且極具實用價值的培訓。本次培訓聚焦軟件研發管理導論 - 建立機器學習…

圖算法在前端的復雜交互

引言 圖算法是處理復雜關系和交互的強大工具,在前端開發中有著廣泛應用。從社交網絡的推薦系統到流程圖編輯器的路徑優化,再到權限依賴的拓撲排序,圖算法能夠高效解決數據之間的復雜關聯問題。隨著 Web 應用交互復雜度的增加,如實…

Prometheus Operator:Kubernetes 監控自動化實踐

在云原生時代,Kubernetes 已成為容器編排的事實標準。然而,在高度動態的 Kubernetes 環境中,傳統的監控工具往往難以跟上服務的快速變化。Prometheus Operator 應運而生,它將 Prometheus 及其生態系統與 Kubernetes 深度融合&…

一種融合人工智能與圖像處理的發票OCR技術,將人力從繁瑣的票據處理中解放

在數字化浪潮席卷全球的今天,發票OCR技術正悄然改變著企業財務流程的運作模式。這項融合了人工智能與圖像處理的前沿技術,已成為財務自動化不可或缺的核心引擎。核心技術:OCR驅動的智能識別引擎發票OCR技術的核心在于光學字符識別&#xff08…

時空大數據:數字時代的“時空羅盤“

引言:為何需要“時空大數據”?“大數據”早已成為熱詞,但“時空大數據”的提出卻暗含深刻邏輯。中國工程院王家耀院士指出,早期社會存在三大認知局限:過度關注商業大數據而忽視科學決策需求;忽視數據的時空…

PySide筆記之信號連接信號

PySide筆記之信號連接信號code review! 在 PySide6(以及 Qt 的其他綁定,如 PyQt)中,信號可以連接到信號。也就是說,可以把一個信號的發射,作為另一個信號的觸發條件。這樣做的效果是:當第一個信…

Linux操作系統之線程:線程概念

目錄 前言: 一、進程與線程 二、線程初體驗 三、分頁式存儲管理初談 總結: 前言: 大家好啊,今天我們就要開始翻閱我們linux操作系統的另外一座大山:線程了。 對于線程,大體結構上我們是劃分為兩部分…

windows利用wsl安裝qemu

首先需要安裝wsl,然后在swl中啟動一個子系統。這里我啟動一個ubuntu22.04。 接下來的操作全部為在子系統中的操作。 檢查虛擬化 在開始安裝之前,讓我們檢查一下你的機器是否支持虛擬化。 要做到這一點,請使用以下命令: sean@DESKTOP-PPNPJJ3:~$ LC_ALL=C lscpu | grep …

如何使用 OpenCV 打開指定攝像頭

在計算機視覺應用中,經常需要從特定的攝像頭設備獲取視頻流。例如,在多攝像頭環境中,當使用 OpenCV 的 cv::VideoCapture 類打開攝像頭時,如果不指定攝像頭的 ID,可能會隨機打開系統中的某個攝像頭,或者按照…

JAVA面試寶典 -《分布式ID生成器:Snowflake優化變種》

🚀 分布式ID生成器:Snowflake優化變種 一場訂單高峰,一次鏈路追蹤,一條消息投遞…你是否想過,它們背后都依賴著一個“低調卻關鍵”的存在——唯一ID。本文將帶你深入理解分布式ID生成器的核心原理與工程實踐&#xff0…

蘋果的機器學習框架將支持英偉達的CUDA平臺

蘋果專為Apple Silicon設計的MLX機器學習框架即將迎來CUDA后端支持,這意義重大。原因如下。 這項開發工作由GitHub開發者zcbenz主導(據AppleInsider報道),他于數月前開始構建CUDA支持的原型。此后他將項目拆分為多個模塊&#xff…

golang語法-----變量、常量

變量1、聲明與初始化(1)標準聲明 (先聲明,后賦值)var age int // 聲明一個 int 類型的變量 age,此時 age 的值是 0 fmt.Println(age) // 輸出: 0age 30 // 給 age 賦值 fmt.Println(age) // 輸出: 30//int 的零…

Jenkins+Docker(docker-compose、Dockerfile)+Gitee實現自動化部署

項目目錄結構 project-root/ ├── pom.xml ├── docker │ ├── copy.sh │ ├── file │ │ ├── jar │ │ │ └── 存放執行copy.sh以后jar包的位置 │ │ └── Dockerfile │ └── docker-compose.yml ├── docker-only-test │ ├─…

TASK01【datawhale組隊學習】地瓜機器人具身智能概述

https://github.com/datawhalechina/ai-hardware-robotics 參考資料地址 具身智能(Embodied AI) 具身智能 智能的大腦 行動的身體。 比例(Proportional)、積分(Integral)、微分(Derivative&a…

uni-app 配置華為離線推送流程

1、首先需要創建一個華為開發者賬號,我這個是個人開發賬號 申請開發者賬號 2、去AppGallery Connect登陸我們剛剛創建好的賬號,點擊頁面的APP進入到如下3 AppGallery Connect ????? ?3、在AppGallery Connect 網站中創建一個 Android應用、點擊…

當下主流攝像頭及其核心參數詳解

📖 推薦閱讀:《Yocto項目實戰教程:高效定制嵌入式Linux系統》 🎥 更多學習視頻請關注 B 站:嵌入式Jerry 當下主流攝像頭及其核心參數詳解 一、攝像頭發展概述 攝像頭作為現代智能設備(如手機、安防、車載、工業等&am…

下載了docker但是VirtualBox突然啟動不了了

今天下docker后發現 eNSP 路由器,防火墻啟動不了了去virtualbox檢查的時候發現無法啟動:報錯:不能為虛擬電腦 AR_Base 打開一個新任務.Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).返回代碼: E_F…