我有一個測試集羣,其中包含一臺linux機器,一臺iMac和一臺windows 7個人電腦。 Linux機器託管我寫的junit測試,另外兩臺機器作爲使用webDriver的瀏覽器自動化測試的端點。 執行junit測試的腳本通過不同的瀏覽器循環,並使用selenium webDriver對每個瀏覽器執行junit測試。到目前爲止,瀏覽器包括iphone,ipad,safari(mac),firefox(mac),chrome(mac),IE10(win7),firefox(win7),chrome(win7)。 在開發這個測試集羣時,我在兩個端點的每一個上遇到了webDriver的隨機崩潰,並發現有必要編寫一個殺死/重新啓動的webDriver jar文件。現在,這在iMac上是一個相對簡單的問題,但在Windows 7 PC上,這證明是非常困難的。從linux通過powershell啓動當前用戶桌面的webDriver端點
Linux機器有一個腳本,通過檢查http://windows.Host:4444/wd/hub/status來檢查webDriver端點是否可用,如果不是,它將在Windows 7 PC上裝入PowerShell(我已將freesshd設置爲指向powershell,而不是cmd.exe的)並運行這些命令: 停止進程-name的java 啓動過程-FilePath C:\ webDriver.bat
webDriver.bat包含: Java的罐子C:\硒 - server.standalone- 2.33.0.jar
這是我遇到的問題: 當powershell重新啓動webDriver使用abov e命令,wedDriver端點可以訪問但不可見。我的測試繼續,但失敗,因爲瀏覽器沒有運行在當前的桌面,而是一些虛擬的或另一個用戶桌面。當我手動運行webDriver.bat時,webDriver在cmd.exe窗口中運行,並且測試對所有win7瀏覽器都正常執行,因此webDriver不會崩潰。
這是我的問題: 如何讓webDriver以我的測試正常進行並正常運行的方式執行,而不是在後臺/其他用戶的桌面上執行?這些測試是Build Verification的一部分,需要按需運行,所以有人手動運行webDriver.bat不是一種選擇。
我以前曾試圖讓webDriver的jar作爲服務運行,並使用samba根據需要重新啓動該服務,但遇到了同樣的問題。 Powershell似乎是一個更好的選擇,更好的控制和驗證jar文件正在運行的能力,但我不知道我是否在這裏面朝着錯誤的方向前進。
我不喜歡學習powershell來完成在另一個操作系統上相對容易的事情,但明白這可能是我唯一的選擇。我也知道我使用的命令並不是一個好的腳本,並歡迎有關如何更好地實現我的目標的建議。
謝謝。
WebDriver不需要-host 0.0.0.0即可遠程訪問;這不是我的問題。 當webDriver通過powershell(或作爲已安裝的服務)啓動時,它啓動的瀏覽器將以無頭狀態運行,而不是當前登錄用戶的桌面。啓動時我無法看到瀏覽器,這意味着像懸停的JavaScript操作不起作用。 – dprski33
當然可以。您需要在您希望瀏覽器控件發生的會話中運行Grid服務器。例如:如果您試圖讓Jenkins從Jenkins用戶帳戶「SYSTEM」啓動瀏覽器,那麼您在Windows上會遇到同樣的問題。在這種情況下,您需要在瀏覽器出現的用戶的前臺運行Jenkins。唯一的解決方法是使用GhostDriver。 – djangofan