Selenium 組件
使用 WebDriver 建構測試套件將需要您理解並有效使用多個組件。如同軟體中的所有事物一樣,不同的人對同一個概念使用不同的術語。以下是本說明中術語使用方式的細分。
術語
- API: 應用程式程式設計介面。這是您用來操作 WebDriver 的一組「命令」。
- 函式庫: 一個程式碼模組,其中包含 API 和實作它們所需的程式碼。函式庫特定於每個語言繫結,例如 Java 的 .jar 檔案、.NET 的 .dll 檔案等。
- 驅動程式: 負責控制實際的瀏覽器。大多數驅動程式是由瀏覽器供應商本身建立的。驅動程式通常是在系統上與瀏覽器本身一起執行的可執行模組,而不是執行測試套件的系統。(雖然這些可能是同一個系統。)注意:有些人將驅動程式稱為代理伺服器。
- 框架: 一個額外的函式庫,用作 WebDriver 套件的支援。這些框架可能是測試框架,例如 JUnit 或 NUnit。它們也可能是支援自然語言功能的框架,例如 Cucumber 或 Robotium。框架也可以編寫並用於諸如操作或配置受測系統、資料建立、測試預言等任務。
組成部分
在其最小值,WebDriver 通過驅動程式與瀏覽器交談。通訊是雙向的:WebDriver 通過驅動程式將命令傳遞到瀏覽器,並通過相同的路徑接收回資訊。

驅動程式特定於瀏覽器,例如 Google Chrome/Chromium 的 ChromeDriver、Mozilla Firefox 的 GeckoDriver 等。驅動程式在與瀏覽器相同的系統上執行。這可能與執行測試本身的系統相同,也可能不同。
上面這個簡單的範例是直接通訊。與瀏覽器的通訊也可能是通過 Selenium Server 或 RemoteWebDriver 的遠端通訊。RemoteWebDriver 在與驅動程式和瀏覽器相同的系統上執行。

遠端通訊也可以使用 Selenium Server 或 Selenium Grid 進行,它們又都與主機系統上的驅動程式交談

框架的適用之處
WebDriver 只有一個任務,也僅有一個任務:通過上述任何方法與瀏覽器通訊。WebDriver 對測試一無所知:它不知道如何比較事物、斷言通過或失敗,而且它當然不知道關於報告或 Given/When/Then 文法的任何事情。
這就是各種框架發揮作用的地方。至少,您將需要一個與語言繫結匹配的測試框架,例如 .NET 的 NUnit、Java 的 JUnit、Ruby 的 RSpec 等。
測試框架負責運行和執行您的 WebDriver 以及測試中的相關步驟。因此,您可以認為它看起來類似於下圖。

諸如 Cucumber 之類的自然語言框架/工具可以作為上圖中「測試框架」框的一部分存在,或者它們可以將測試框架完全包裹在其自訂實作中。