Selenium的底層原理

Selenium 底層主要依賴于 WebDriver 協議(即 W3C WebDriver 規范,早期也有 JSON Wire Protocol)來實現對瀏覽器的遠程控制,其核心架構可以分為以下幾層:

  1. Selenium 客戶端(Client Library)

    • 支持多種語言(Java、Python、C#、JavaScript 等)。

    • 提供了一套統一的 API,讓測試腳本(如 driver.find_element(...)driver.click())可以以語言原生的方式調用。

    • 客戶端發送的每一個操作都會被封裝成一個 HTTP 請求(JSON 格式),通過 HTTP Connector 發往對應的瀏覽器驅動。

  2. WebDriver 協議(W3C WebDriver / JSON Wire Protocol)

    • 定義了“客戶端 → 驅動”之間所有命令的格式和路由,包括元素定位、頁面導航、腳本執行等。

    • 每個命令都是一個 HTTP 請求,路徑類似 /session/{sessionId}/element/{elementId}/click,請求體里是 JSON 參數。

    • 驅動收到 HTTP 請求后,解析出命令類型和參數,然后執行相應的操作。

  3. 瀏覽器驅動(Browser Driver)

    • 每種瀏覽器都有專屬的驅動程序:ChromeDriver、GeckoDriver(Firefox)、EdgeDriver、IEDriver 等。

    • 驅動本質上是一個 HTTP 服務進程,監聽來自客戶端的 WebDriver 協議請求。

    • 驅動內部與瀏覽器進行通信 — 有的通過瀏覽器提供的 DevTools 協議(如 Chrome DevTools Protocol,CDP),有的通過瀏覽器自身的自動化接口(如 Firefox 的 Marionette)。

  4. 瀏覽器自動化接口

    • Chrome:ChromeDriver 調用底層的 CDP,實現頁面元素查找、事件觸發、網絡攔截等。

    • Firefox:GeckoDriver 則通過 Marionette 協議,向瀏覽器內置的自動化模塊發送命令。

    • 其他瀏覽器:各自提供類似接口,或通過插件/擴展形式加載自動化腳本。

  5. 執行流程示例

    1. 客戶端腳本調用 driver.get("https://example.com")

    2. 客戶端庫將該調用轉換成一個 HTTP POST 請求:

      POST /session/{sessionId}/url
      { "url": "https://example.com" }
      
    3. 瀏覽器驅動(如 ChromeDriver)接收請求,解析后通過 CDP 命令告訴 Chrome 打開頁面。

    4. Chrome 完成導航后,驅動返回一個 HTTP 響應給客戶端,客戶端繼續后續操作。

  6. 并行/分布式執行(Selenium Grid)

    • Selenium Grid 把上述架構擴展為分布式系統:一個 Hub 接收測試請求,分發給不同 Node(各自運行一個或多個瀏覽器驅動實例)。

    • Hub 與 Node 之間依然通過 WebDriver 協議通信,只是多了注冊、心跳、能力匹配等管理邏輯。

  7. Selenium RC(歷史)

    • Selenium 1.0(RC)階段,使用了一個名為 “Selenium Core” 的 JavaScript 庫注入到瀏覽器頁面里,通過 DOM 操作和 JS 事件模擬實現自動化,受限于同源策略,需要啟動一個跨域代理服務器。

    • 后來被 WebDriver 模型取代,因為 WebDriver 不注入腳本,只通過瀏覽器自身的自動化接口,可靠性和性能更好。


總結: Selenium 底層核心依賴

  • 客戶端庫 → 封裝 API & 生成 HTTP/JSON 請求

  • WebDriver 協議 → 標準化命令格式(W3C WebDriver / JSON Wire Protocol)

  • 瀏覽器驅動 → HTTP 服務 → 轉發到瀏覽器自動化接口(CDP、Marionette 等)

  • 瀏覽器自動化接口 → 瀏覽器內部執行對應操作,并回傳結果

通過這一“堆棧式”架構,Selenium 才能以語言無關、瀏覽器無關的方式,提供統一且高效的 Web 自動化能力。

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

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

相關文章

前端高頻面試題2:瀏覽器/計算機網絡

本專欄相關鏈接 前端高頻面試題1:HTML/CSS 前端高頻面試題2:瀏覽器/計算機網絡 前端高頻面試題3:JavaScript 1.什么是強緩存、協商緩存? 強緩存: 當瀏覽器請求資源時,首先檢查本地緩存是否命中。如果命…

MATLAB-電偶極子所產出的電磁場仿真

% 清除工作區 clear all % 用戶輸入 a input(輸入點電荷的位置如[1,0,1;2,0,2]表示位置在(1,0,1),(2,0,2): ); Q input(輸入點電荷的電荷量,-表示電性,如[1,-1]: ); a1 input(電場線角度間隔: ); % 角度間隔 % 設置繪圖范圍 xmin min(a(:,1)) - 4;…

混合云數據庫連接問題:本地與云實例的兼容性挑戰

關鍵詞:混合云數據庫,混合云架構,數據庫連接問題,網絡策略,兼容性挑戰,權限沖突,防火墻,VPN,ExpressRoute,Direct Connect,SQL Server,MySQL,PostgreSQL,Azure SQL Database,AWS RDS 隨著企業數字化轉型的深入,混合云架構正成為主流選擇。它結合了本地數據中心…

pikachu靶場通關筆記16 CSRF關卡02-CSRF(POST)

目錄 一、CSRF原理 二、源碼分析 三、滲透實戰 1、構造CSRF鏈接 (1)登錄 (2)bp設置inception on (3)修改個人信息 (4)構造CSRF鏈接 2、模擬受害者登錄 3、誘導受害者點擊 …

CAD2025安裝教程與資源下載

軟件下載 軟件名稱:CAD2025軟件語言:簡體中文軟件大小:2.69G系統要求:Windows10或更高,32/ 64位操作系統硬件要求:CPU2GHz ,RAM4G或更高下載鏈接: 鏈接:https://pan.qua…

SpringBoot離線應用的5種實現方式

在當今高度依賴網絡的環境中,離線應用的價值日益凸顯。無論是在網絡不穩定的區域運行的現場系統,還是需要在斷網環境下使用的企業內部應用,具備離線工作能力已成為許多應用的必備特性。 本文將介紹基于SpringBoot實現離線應用的5種不同方式。…

數據類型 -- 字符

在C中,字符型(char)用于存儲單個字符,如字母、數字、符號等。字符型是最基本的數據類型之一,常用于處理文本、字符數組(字符串)等場景。 1. 基本類型 ? char:標準字符類型&#x…

國標GB28181視頻平臺EasyGBS視頻實時監控系統打造換熱站全景可視化管理方案

一、方案背景? 在城市供熱體系中,換熱站作為連接熱源與用戶的核心樞紐,其運行穩定性直接影響供熱質量。面對供熱規模擴大與需求升級,傳統人工巡檢模式暴露出效率低、響應慢、監測不足等問題。基于GB28181協議的EasyGBS視頻實時監控系統&…

174頁PPT家居制造業集團戰略規劃和運營管控規劃方案

甲方集團需要制定一個清晰的集團價值定位,從“指引多元”、“塑造 能力”以及“強化協同”等方面引領甲方做大做強 集團需要通過管控模式、組織架構及職能、授權界面、關鍵流程、戰略 實施和組織演進路徑,平衡風險控制和迅速發展,保證戰略落地…

python打卡第45天

tensorboard的發展歷史和原理 一、發展歷史 起源與 TensorFlow 一同誕生 (2015年底): TensorBoard 最初是作為 TensorFlow 開源項目(2015年11月發布)的一部分而設計和開發的。其核心目標是解決深度學習模型訓練過程中的“黑盒”問題,提供直觀…

CentOS 7如何編譯安裝升級gcc至7.5版本?

CentOS 7如何編譯安裝升級gcc版本? 由于配置CentOS-SCLo-scl.repo與CentOS-SCLo-scl-rh.repo后執行yum install -y devtoolset-7安裝總是異常,遂決定編譯安裝gcc7.5 # 備份之前的yum .repo文件至 /tmp/repo_bak 目錄 mkdir -p /tmp/repo_bak && cd /etc…

中山大學美團港科大提出首個音頻驅動多人對話視頻生成MultiTalk,輸入一個音頻和提示,即可生成對應唇部、音頻交互視頻。

由中山大學、美團、香港科技大學聯合提出的MultiTalk是一個用于音頻驅動的多人對話視頻生成的新框架。給定一個多流音頻輸入和一個提示,MultiTalk 會生成一個包含提示所對應的交互的視頻,其唇部動作與音頻保持一致。 相關鏈接 論文:https://a…

iOS 門店營收表格功能的實現

iOS 門店營收表格功能實現方案 核心功能需求 數據展示:表格形式展示門店/日期維度的營收數據排序功能:支持按營收金額、增長率等排序篩選功能:按日期范圍/門店/區域篩選交互操作:點擊查看詳情、數據刷新數據可視化:關…

怎么解決cesium加載模型太黑,程序崩潰,不顯示,位置不對模型太大,Cesium加載gltf/glb模型后變暗

有時候咱們cesium加載模型時候型太黑,程序崩潰,不顯示,位置不對模型太大怎么辦 需要處理 可以聯系Q:424081801 謝謝 需要處理 可以聯系Q:424081801 謝謝

移植driver_monitoring_system里的MobileNet到RK3588

根據下面的內容寫一篇技術博客,要求增加更多的解釋,讓普通讀者也能了解為什么這樣做,具體怎么做 移植driver_monitoring_system里的MobileNet到RK3588 一、背景二、操作步驟2.1 下載源碼2.2 Tensorflow轉成ONNX2.2.1 在x86上創建容器,安裝依賴2.2.2 保存為saved-model2.2.3 sav…

低代碼平臺前端頁面表格字段綁定與后端數據傳輸交互主要有哪些方式?華為云Astro在這方面有哪些方式?

目錄 ?? 一、低代碼平臺中常見的數據綁定與交互方式 1. 接口綁定(API 調用) 2. 數據源綁定(DataSource) 3. 變量中轉(臨時變量 / 頁面狀態) 4. 數據模型綁定(模型驅動) ?? 二、華為云 Astro 輕應用的實現方式 ? 1. 數據源綁定(API服務+API網關) ? 2. 變…

《doubao-lite-32k 模型緩存機制使用指南》

doubao-lite-32k 模型緩存機制使用指南 一、緩存概述 1. 緩存作用 doubao-lite-32k 模型的緩存(Session 緩存)主要用于多輪對話場景,實現以下功能: 存儲歷史對話信息(Token),避免重復傳輸上下文,減少計算資源消耗。 優化長上下文(最長 32K Token)處理效率,提升多…

量子計算突破:新型超導芯片重構計算范式

??2024年IBM 1281量子比特超導芯片實現0.001%量子錯誤率,計算速度達經典超算2.5億倍??。本文解析: ??物理突破??:鉭基超導材料使量子相干時間突破??800μs??(提升15倍)??架構革命??:十字形…

云計算 Linux Rocky day03(which、快捷鍵、mount、家目錄、ls、alias、mkdir、rm、mv、cp、grep)

云計算 Linux Rocky day03(which、快捷鍵、mount、家目錄、ls、alias、mkdir、rm、mv、cp、grep) 目錄 云計算 Linux Rocky day03(which、快捷鍵、mount、家目錄、ls、alias、mkdir、rm、mv、cp、grep)1.which找到命令所對應的程序…

負載均衡LB》》HAproxy

Ubuntu 22.04 安裝HA-proxy 官網 資料 # 更新系統包列表: sudo apt update # 安裝 HAproxy sudo apt install haproxy -y # 驗證安裝 haproxy -v # 如下圖配置 Haproxy ##### 基于IP的訪問控制 acl ctrl_ip src 172.25.254.1 172.25.254.20 192.168.0.0/24 #…