• Selenium Video Tutorials

Selenium WebDriver 與 RC 的區別



Selenium WebDriver 和 Selenium RC 之間存在許多差異。儘管這兩個工具都幫助使用各種程式語言建立自動化測試,但它們在許多方面都不同。

Selenium WebDriver

Selenium WebDriver 是 Selenium Remote Control 的繼任者,它直接向瀏覽器傳送命令並檢索結果。現在讓我們討論 Selenium WebDriver 的架構。

Selenium WebDriver 架構

Selenium Web Driver 架構的簡化圖如下所示:

Selenium Vs RC 1

從 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 Vs RC 2

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
瀏覽器支援 在支援新瀏覽器方面不太穩定 在支援新瀏覽器方面穩定
使用者互動 能夠處理游標和滑鼠操作 無法處理游標和滑鼠操作
易用性 在開發測試方面更復雜 在開發測試方面不太複雜
廣告