開發者提示

關於如何使用 Crazy Fun 執行 Selenium 測試套件的詳細資訊。

此文件先前位於 wiki 上

執行單一測試

在開發 WebDriver 時,通常會希望執行單一測試,而不是特定驅動程式的整個測試套件。

您可以使用這種方式執行給定測試類別中的所有測試

./go test_firefox onlyRun=CombinedInputActionsTest

您也可以透過輸入以下內容,直接從命令列執行單一測試

./go test_firefox method=foo

不在錯誤或失敗時停止

測試套件預設會在錯誤和失敗時停止。您可以將 haltonerrorhaltonfailure 環境變數設定為 0 來停用此行為。

檢閱測試日誌

當您執行測試時,測試結果不會顯示在螢幕上。它們會寫入 ./build/test_logs 資料夾。會寫入一對檔案。它們的名稱相對一致,並包含已執行測試的詳細資訊。這對檔案包含一個 txt 檔案和一個 xml 檔案。xml 檔案包含更多關於執行時期環境的資訊,例如路徑、Ant 版本等等。這些檔案會在下次執行相同的測試目標時被覆寫,因此如果結果對您很重要,您可能需要封存結果。

使用 Rake

Rake 與使用其他建置工具(例如 “make” 或 “ant”)非常相似。您可以透過將 “target” 作為參數加入來指定要執行的 “target”,並且您可以一次加入多個 target。請注意,由於 WebDriver 不依賴 ruby 的安裝並使用 JRuby,因此 rake 不應直接介入 - 請改用 go 腳本。例如,為了清除建置,然後建置並執行 HtmlUnitDriver 測試

./go clean test_htmlunit

使用的預設 target 將編譯程式碼並執行所有測試。更有趣的 target 包括

目標描述
清理刪除建置目錄的內容,移除所有已編譯的工件
測試編譯 HtmlUnitDriver、FirefoxDriver 和 InternetExplorerDriver 的相依性,並執行它們的所有測試,以及支援函式庫的測試
firefox編譯 FirefoxDriver
htmlunit編譯 HtmlUnitDriver
ie編譯 InternetExplorerDriver。這不會在非 Windows 系統上編譯 C++,但無論您使用哪個作業系統,都會始終編譯 Java
support猜猜這是做什麼的 :)
test_htmlunit編譯相依性,然後執行 HtmlUnitDriver 的測試。此表格中所有編譯目標都可以遵循相同的 “test_x” 模式。

使用 Java 測試執行遠端除錯器

您可以在除錯模式下執行測試,並等待遠端 java 監聽器(可以在 eclipse 或 intellij 中設定)。

./go debug=true suspend=true test_firefox

除錯 Firefox 驅動程式

從 Firefox 進程本身取得輸出

這通常對於除錯 Firefox 啟動問題很有用。Java 系統屬性 webdriver.firefox.logfile 將指示 FirefoxDriver 將輸出重新導向到檔案

java -Dwebdriver.firefox.logfile=/dev/stdout -cp selenium-2.jar <sometest>

輸出到錯誤控制台

用於除錯 Firefox 驅動程式擴充功能的常見技術是除錯陳述式。以下兩種方法幾乎可以從擴充功能內的任何 Javascript 程式碼中使用

  • Logger.dumpn() - 將字串記錄到主控台(並將引數轉換為字串)。例如:Logger.dumpn("找到元素:" + node)
  • Logger.dump() - 取得單一引數(物件),並傾印其所有內容:已實作的介面、資料欄位、方法等等。

從錯誤控制台取得輸出到檔案

若要查看使用 Logger 公用程式產生的輸出,必須開啟 Firefox 的錯誤控制台 - 在遠端機器上很困難或根本不可能。幸運的是,有一種方法可以將輸出的內容傾印到檔案

FirefoxProfile p = new FirefoxProfile();
p.setPreference("webdriver.log.file", "/tmp/firefox_console");
WebDriver driver = new FirefoxDriver(p);
...

webdriver.log.file 偏好設定將指示 Logger 將主控台的所有內容傾印到指定的檔案。webdriver.log.file

取得更多輸出到命令列

當懷疑來自 Firefox 的額外記錄可能有益時,可以將除錯層級調到最高

export NSPR_LOG_MODULES=all:3

設定此環境變數將導致 Firefox 將額外訊息記錄到主控台。將此環境變數與 webdriver.firefox.logfile 一起使用,以取得 Firefox 的主控台輸出。

除錯 Internet Explorer 驅動程式

為了從 IEDriverServer.exe 取得詳細資訊,您可以使用選項 devMode=true 執行測試,此選項會將記錄層級設定為 DEBUG,並將記錄輸出重新導向到檔案 iedriver.log

./go test_ie devMode=true

新增測試

大多數 WebDriver 的測試案例都位於 java/client/test/org/openqa/selenium 下。例如,為了示範點擊元素的問題,應該將測試案例新增到 ClickTest。測試案例已經有一個驅動程式實例 - 無需建立一個。測試使用由程序內伺服器提供的頁面,這些伺服器從 common/src/web 提供服務。它們的 URL 由 Pages 類別提供,因此在新增頁面時,也將其新增到 Pages 類別。

手動與 RemoteWebDriverServer 互動

我們可以使用網頁瀏覽器或 telnet 等工具與 RemoteWebDriverServer 互動,例如除錯 JSON 協定。以下是一個檢查安裝在本機上的伺服器狀態的簡單範例

在網頁瀏覽器中

http://localhost:8080/wd/hub/status/

在 telnet 中

telnet localhost 8080

GET /wd/hub/status/ HTTP/1.0

在 Mac 和 Unix 中,一般來說請嘗試 curl

curl  http://localhost:8080/wd/hub/status

在 linux 上,使用 wget

wget http://localhost:8080/wd/hub/status

在所有這些情況下,RemoteWebDriverServer 應該回應


{status:0} 
最後修改於 2022 年 1 月 10 日:更多 wiki (#907) [部署網站] (adcf706a1ad)