
- Selenium 教程
- Selenium - 首頁
- Selenium - 概述
- Selenium - 元件
- Selenium - 自動化測試
- Selenium - 環境搭建
- Selenium - 遠端控制
- Selenium IDE 教程
- Selenium - IDE 簡介
- Selenium - 特性
- Selenium - 限制
- Selenium - 安裝
- Selenium - 建立測試用例
- Selenium - 建立指令碼
- Selenium - 控制流
- Selenium - 儲存變數
- Selenium - 警報和彈出視窗
- Selenium - Selenese 命令
- Selenium - Actions 命令
- Selenium - Accessors 命令
- Selenium - Assertions 命令
- Selenium - Assert/Verify 方法
- Selenium - 定位策略
- Selenium - 指令碼除錯
- Selenium - 驗證點
- Selenium - 模式匹配
- Selenium - JSON 資料檔案
- Selenium - 瀏覽器執行
- Selenium - 使用者擴充套件
- Selenium - 程式碼匯出
- Selenium - 程式碼輸出
- Selenium - JavaScript 函式
- Selenium - 外掛
- Selenium WebDriver 教程
- Selenium - 簡介
- Selenium WebDriver 與 RC 的區別
- Selenium - 安裝
- Selenium - 第一個測試指令碼
- Selenium - 驅動程式會話
- Selenium - 瀏覽器選項
- Selenium - Chrome 選項
- Selenium - Edge 選項
- Selenium - Firefox 選項
- Selenium - Safari 選項
- Selenium - 雙擊
- Selenium - 右鍵單擊
- Python 中的 HTML 報告
- 處理編輯框
- Selenium - 單個元素
- Selenium - 多個元素
- Selenium Web 元素
- Selenium - 檔案上傳
- Selenium - 定位器策略
- Selenium - 相對定位器
- Selenium - 查詢器
- Selenium - 查詢所有連結
- Selenium - 使用者互動
- Selenium - WebElement 命令
- Selenium - 瀏覽器互動
- Selenium - 瀏覽器命令
- Selenium - 瀏覽器導航
- Selenium - 警報和彈出視窗
- Selenium - 處理表單
- Selenium - 視窗和標籤頁
- Selenium - 處理連結
- Selenium - 輸入框
- Selenium - 單選按鈕
- Selenium - 複選框
- Selenium - 下拉框
- Selenium - 處理 IFrame
- Selenium - 處理 Cookie
- Selenium - 日期時間選擇器
- Selenium - 動態 Web 表格
- Selenium - Actions 類
- Selenium - Action 類
- Selenium - 鍵盤事件
- Selenium - 鍵上/下
- Selenium - 複製和貼上
- Selenium - 處理特殊鍵
- Selenium - 滑鼠事件
- Selenium - 拖放
- Selenium - 筆事件
- Selenium - 滾動操作
- Selenium - 等待策略
- Selenium - 顯式/隱式等待
- Selenium - 支援特性
- Selenium - 多選
- Selenium - 等待支援
- Selenium - 選擇支援
- Selenium - 顏色支援
- Selenium - ThreadGuard
- Selenium - 錯誤和日誌記錄
- Selenium - 異常處理
- Selenium - 其他
- Selenium - 處理 Ajax 呼叫
- Selenium - JSON 資料檔案
- Selenium - CSV 資料檔案
- Selenium - Excel 資料檔案
- Selenium - 跨瀏覽器測試
- Selenium - 多瀏覽器測試
- Selenium - 多視窗測試
- Selenium - JavaScript 執行器
- Selenium - 無頭執行
- Selenium - 捕獲螢幕截圖
- Selenium - 捕獲影片
- Selenium - 頁面物件模型
- Selenium - 頁面工廠
- Selenium - 記錄和回放
- Selenium - 框架
- Selenium - 瀏覽上下文
- Selenium - DevTools
- Selenium Grid 教程
- Selenium - 概述
- Selenium - 架構
- Selenium - 元件
- Selenium - 配置
- Selenium - 建立測試指令碼
- Selenium - 測試執行
- Selenium - 端點
- Selenium - 自定義節點
- Selenium 報告工具
- Selenium - 報告工具
- Selenium - TestNG
- Selenium - JUnit
- Selenium - Allure
- Selenium 與其他技術
- Selenium - Java 教程
- Selenium - Python 教程
- Selenium - C# 教程
- Selenium - Javascript 教程
- Selenium - Kotlin 教程
- Selenium - Ruby 教程
- Selenium - Maven 和 Jenkins
- Selenium - 資料庫測試
- Selenium - LogExpert 日誌記錄
- Selenium - Log4j 日誌記錄
- Selenium - Robot Framework
- Selenium - AutoIT
- Selenium - Flash 測試
- Selenium - Apache Ant
- Selenium - Github 教程
- Selenium - SoapUI
- Selenium - Cucumber
- Selenium - IntelliJ
- Selenium - XPath
- Selenium 其他概念
- Selenium - IE 驅動程式
- Selenium - 自動化框架
- Selenium - 關鍵字驅動框架
- Selenium - 資料驅動框架
- Selenium - 混合驅動框架
- Selenium - SSL 證書錯誤
- Selenium - 替代方案
- Selenium 有用資源
- Selenium - 問答
- Selenium - 快速指南
- Selenium - 有用資源
- Selenium - 自動化實踐
- Selenium - 討論
Selenium WebDriver 與 RC 的區別
Selenium WebDriver 和 Selenium RC 之間存在許多差異。儘管這兩個工具都幫助使用各種程式語言建立自動化測試,但它們在許多方面都不同。
Selenium WebDriver
Selenium WebDriver 是 Selenium Remote Control 的繼任者,它直接向瀏覽器傳送命令並檢索結果。現在讓我們討論 Selenium WebDriver 的架構。
Selenium WebDriver 架構
Selenium Web Driver 架構的簡化圖如下所示:

從 Selenium 4 版本開始,整個架構與 W3C(全球資訊網聯盟)完全相容,這意味著 Selenium 4 遵循 W3C 提供的所有標準和指南。我們可以在以下連結中獲取有關 W3C 的更多資訊:
https://tutorialspoint.tw/world-wide-web-consortium-w3c.
Selenium WebDriver 架構非常簡單。它不需要任何代理伺服器,並且可以直接與瀏覽器通訊。只需要一個 IDE 來開發測試程式碼,以及一個執行這些測試的瀏覽器。
Selenium WebDriver API 實現了瀏覽器和瀏覽器驅動程式之間的互動。此架構包含四個層,即 Selenium 客戶端庫、W3C 協議、瀏覽器驅動程式和瀏覽器。由於瀏覽器、瀏覽器驅動程式和 Selenium WebDriver 符合 W3C 協議,因此客戶端庫和瀏覽器驅動程式之間的互動更加高效、快速、可靠和穩定。
Selenium 客戶端庫包含 Java、Ruby、Python、C# 等語言。用任何語言編寫的測試用例都用於傳送命令以與瀏覽器進行互動。
程式碼觸發後,客戶端會根據 W3C 協議將其轉換為 Json 或其他類似的標準格式。
W3C 協議用於將資訊從伺服器傳輸到客戶端的任務。瀏覽器驅動程式充當客戶端和瀏覽器之間的橋樑。瀏覽器驅動程式具有實際在瀏覽器上執行的序列化請求。瀏覽器驅動程式與其各自的瀏覽器互動,並透過解釋 Json 來執行命令。瀏覽器驅動程式一旦獲得任何指令,就會在瀏覽器上執行它們。然後以 HTTP 響應的形式給出響應。
瀏覽器驅動程式還會根據 W3C 協議以標準化格式序列化它收到的響應,並將其傳送回客戶端。然後客戶端將對其收到的響應進行反序列化,以確認命令請求是否已成功執行。
讓我們考慮以下程式碼塊:
WebDriver driver = new ChromeDriver(); driver.get (“https://tutorialspoint.tw/selenium/practice/selenium_automation_practice.php“);
一旦我們執行此程式碼塊,整個程式碼將根據 W3C 協議透過 HTTP 作為 URL 轉換為 JSON 或任何其他標準格式。轉換後的 URL 將饋送到 ChromeDriver。
瀏覽器驅動程式利用 HTTP 伺服器從 HTTP 獲取請求。當瀏覽器驅動程式獲取 URL 時,它透過 HTTP 將請求傳遞給其瀏覽器。它將觸發在瀏覽器上執行 Selenium 指令的事件。
現在,如果請求是 POST 請求,它將在瀏覽器上觸發一個操作。如果是 GET 請求,則響應將在瀏覽器端生成。最後它將透過 HTTP 傳遞給瀏覽器驅動程式。瀏覽器驅動程式將依次將其傳送到 UI。
Selenium Remote Control (RC)
Selenium Remote Control 是一個用 Java 實現的伺服器。Selenium Remote Control (RC) 是允許執行比簡單瀏覽器操作和線性執行更復雜操作的旗艦測試框架。它可以使用 HTTP 接受瀏覽器的命令。Selenium Remote Control 有一個 Selenium Remote Control 伺服器和一個 Selenium Remote Control 客戶端。在當前版本的 Selenium 中,Selenium RC 已過時,並且已被 Selenium 棄用。
Selenium Remote Control 架構
現在讓我們討論 Selenium Remote Control 的架構。Selenium Remote Control 架構的簡化圖如下所示:

Selenium Remote Control 架構並不簡單。為了在 Selenium Remote Control 中觸發測試,我們需要在我們的系統中安裝和設定遠端控制伺服器。它類似於 Web 瀏覽器和命令之間的橋樑。Selenium Remote Control 伺服器將 Selenium Core(一個 JavaScript 程式)放在瀏覽器中。在此之後,Selenium Core 根據測試以 JavaScript 命令的形式從 Selenium Remote Control 伺服器獲取訊息。瀏覽器執行從 Selenium Core 收到的命令,並將測試響應傳送回伺服器。
因此,Selenium Remote Control 所構建的架構使得測試執行速度變慢,因為它基於 Selenium Core,後者是一種 JavaScript 語言。
這總結了 Selenium WebDriver 架構的整體解釋。
Selenium WebDriver 和 Remote Control (RC) 之間的區別
Selenium Remote Control 和 Selenium Webdriver 之間的主要區別如下所示:
特性 | Selenium Webdriver | Selenium RC |
---|---|---|
架構 | 簡單直接 | 複雜,包含客戶端和伺服器 |
伺服器 | 不需要伺服器即可啟動測試執行 | 需要伺服器才能啟動測試執行 |
API | 具有更強大的 API。 | 具有較弱的 API。 |
錄製 | 不能用於錄製目的 | 可以用於錄製目的。 |
無頭 | 支援使用 HTMLUnit 瀏覽器進行無頭執行 | 不支援無頭執行。 |
iPhone/Android | 能夠使用 Android 驅動程式和 iPhone 驅動程式測試移動裝置 | 無法測試 iPhone/Android 移動裝置 |
報告 | 預設情況下無法生成報告 | 預設情況下提供 html 格式的報告生成 |
效能 | 速度快,因為它直接與瀏覽器通訊 | 速度不如 Selenium WebDriver 快,因為它不直接與瀏覽器通訊。 |
OOP | 完全基於 OOP | 不完全基於 OOP |
瀏覽器支援 | 在支援新瀏覽器方面不太穩定 | 在支援新瀏覽器方面穩定 |
使用者互動 | 能夠處理游標和滑鼠操作 | 無法處理游標和滑鼠操作 |
易用性 | 在開發測試方面更復雜 | 在開發測試方面不太複雜 |