開發者提示
此文件先前位於 wiki 上
執行單一測試
在開發 WebDriver 時,通常會希望執行單一測試,而不是特定驅動程式的整個測試套件。
您可以使用這種方式執行給定測試類別中的所有測試
./go test_firefox onlyRun=CombinedInputActionsTest
您也可以透過輸入以下內容,直接從命令列執行單一測試
./go test_firefox method=foo
不在錯誤或失敗時停止
測試套件預設會在錯誤和失敗時停止。您可以將 haltonerror
或 haltonfailure
環境變數設定為 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}