為 Selenium 2 程式碼新增驅動程式

關於如何為 Selenium 2 的新驅動程式建立測試的說明。

此文件先前位於 wiki \

簡介

WebDriver 具有全面的測試套件,描述了新實作的預期行為。為了簡潔起見,我們假設您正在 Java 中實作驅動程式,但是您可以查看任何現有的實作,了解我們如何處理更複雜的建置或其他語言(一旦您閱讀完本文)。

編寫新的 WebDriver 實作

建立新的頂層目錄

建立一個新的頂層資料夾,與 “common” 和 “firefox” 平行,以您的瀏覽器命名。在此資料夾中,建立 “src/java” 和 “test/java” 目錄。應該很明顯哪些檔案放在哪裡。

設定測試套件

將現有的測試套件之一複製到您的測試樹中,並為您的新瀏覽器修改它。這可能會導致您修改 “Ignore.java” 類別(這是預期的),並在原始碼樹中為您的實作新增一個保留類別。您必須包含 “common” 目錄,以便取得所有測試。目前,只要沒有造成致命崩潰,就讓測試保持原樣。

新增測試套件後,在專案的頂層新增一個 “build.desc” CrazyFunBuild 檔案。以 “htmlunit” 目錄中的檔案為範本。然後您應該能夠使用 “go” 腳本從命令列執行您的測試。

在這一點上,我們預期在執行測試時會發生全面且災難性的失敗。

開始實作

如果您的瀏覽器在進程外執行,強烈建議使用 JsonWireProtocol。這將使客戶端(使用者使用的 API)的實作相對便宜,並且意味著您可以更輕鬆地獲得 Java、C#、Ruby 和 Python 的支援,因為您可以擴展遠端客戶端。

實作提示

從哪裡開始

如前所述,具有一組測試套件。建議使這些測試通過的順序大致如下:

  1. ElementFindingTest — 需要此測試,因為元素定位是關鍵
  2. PageLoadingTest
  3. ChildrenFindingTest — 更多元素尋找
  4. FormHandlingTest
  5. FrameSwitchingTest
  6. ExecutingJavascriptTest
  7. JavascriptEnabledDriverTest

在這一點上,您將擁有一個相當完整的可用驅動程式。在那之後,最好先讓使用者互動正確

  1. CorrectEventFiringTest
  2. TypingTest

在深入研究尖端內容之前

  1. AlertsTest

不必在一個類別中讓每個測試都工作後才繼續進行。我傾向於盡可能深入一個類別,然後在情況變得困難時切換到清單上的下一個類別。這使您可以保持合理的速度,並且仍然涵蓋基礎知識。

執行單一測試

這遠非理想,但我們使用的方法是修改 common 專案中的 SingleTestSuite 類別,然後透過 IDE 的 UI 修改它運行的模組(也就是說,只需進入啟動組態(在 IDEA 中)並修改使用的模組:不要移動檔案!)這個類別應該是不言自明的。

忽略測試

在某些時候,您會想要停止臨時執行測試,並使用持續建置產品來確保您沒有引入迴歸。此時,流程是從命令列執行測試。這將產生一個失敗測試的清單。瀏覽每個測試,並新增或修改與測試關聯的 “@Ignore”。重新執行測試。可能需要幾次迭代,但您的建置最終會變為綠色。很好。

建置在幕後使用 ant,並將日誌儲存在 “build/build_log.xml” 中,測試日誌儲存在 “build/test_logs” 中

上次修改於 2022 年 1 月 12 日:封存其他 wiki 文章 (e75f49c8af3)