2014-10-20 174 views
11

這樣我們就可以執行前到後的Web UI測試中,我們使用硒和ChromeDriver到頁面加載/互動自動化作爲我們的測試包的一部分。運行硒服務器和ChromeDriver作爲Windows服務

這是行爲的開發人員測試(開發者的本地機器上)在如預期,但我們正在努力執行這些檢查作爲我們持續集成構建的一部分。

我們的服務器工廠是基於* NIX的,我們所有的CI基礎設施都在這些機器上運行。爲了我們可以在Windows下測試Chrome(我們的交付機制),我們已經配置了一個Selenium Grid。當CI測試運行時,他們訪問網格,以便找到一個Windows節點來運行測試。

我們安裝了Windows桌面專門用於運行這些測試。這包含我們標準的Windows 7企業版本。本機將定期重新啓動,以符合IT部門的更新策略。

在努力確保硒服務器始終運行,我們增加了Selenium服務器作爲Windows服務(在「節點」模式下運行)。硒服務器配置爲啓動ChromeDriver以調用模擬的用戶交互。

但是,從CI運行測試時,由於超時而失敗。我們的工作理論是,運行服務的系統用戶不能創建交互式窗口。網絡搜索引發了對「Session 0」問題的提及,但對於如何向前推進幾乎沒有建設性的建議。

從交互式會話手動啓動Selenium服務器的過程不是一個可行的解決方案,因爲這是導致脆性試驗 - 這是一個基礎設施問題沒有到期,而不是一個真正的迴歸測試。


,我們怎麼能有硒Server實例通過Windows服務啓動時系統重新啓動,它能夠啓動Chrome實例?

回答

6

現在你不能幫助它 - 它用來工作在會話0罰款,但鍍鉻更新後,這幾天只適用於互動環節。

相關的問題:

https://code.google.com/p/selenium/issues/detail?id=8029 https://code.google.com/p/chromium/issues/detail?id=422218

+0

是否存在Chrome的特定版本,您知道它在Session 0中有效?如果我可以簡單地降級,那麼這將是一個選擇。 – jwa 2014-10-20 13:54:30

+1

在38之前版本的Chrome中,所有作爲windows服務都可以正常工作。自38版以來 - 我的selenium windows服務無法使用。降級Chrome解決了我的問題 – razon 2014-10-30 09:50:13

+1

我可以確認@razon在說什麼。在服務中運行時,Chrome 37是最後一個已知版本。 – 2015-07-08 11:26:03

3

您不能運行硒網格和以往Windows服務,因爲Windows Vista中。微軟稱之爲「會話0隔離」。您可以在Windows 2000或XP中執行此操作,但自Vista發佈以來,Microsoft不再允許網格與桌面(或其他任何UI程序)進行交互。無論您仍然看到「與桌面交互」複選框,這是一條紅鯡魚。所以,你必須在該服務器的前臺運行Selenium Grid,以便它能夠訪問會話。如果它運行的是Windows Server,理論上可以有多個會話,並且在非零用戶會話之一的前臺使網格運行在前臺。

+0

同意:(你可以使用nssm作爲服務啓動集線器,但是如果節點作爲服務啓動,你將無法「看見」瀏覽器。對於某些人可能不是問題,但它適用於我。該節點作爲批處理文件運行,要開始自動將其添加到「啓動」文件夾或創建一個更棘手的任務計劃程序。 – oden 2016-04-06 11:49:13

3

我首選的解決了這個問題(以及運行網格硒作爲一種服務我的默認選項)是使用一種稱爲AlwaysUp簡單的工具。它有30天免費試用期。

怎麼辦:

這樣的節點將運行作爲服務,在機器重新啓動後仍能繼續使用,並可使用最新版本的Chrome。

如果您用來登錄到計算機的用戶帳戶與您指定將該節點作爲服務運行的用戶帳戶不同,那麼您將看不到在桌面上彈出的瀏覽器,因爲它們在不同的用戶中運行會話。最終的結果是,它與作爲普通服務運行幾乎相同,但圍繞着Session 0問題。

+0

這與NSSM有什麼不同嗎?https://nssm.cc/ – 2016-09-14 15:29:16

12

可以用NSSM輕鬆完成。 安裝服務看起來像這些:

nssm install seleniumhub java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -role hub -hubConfig C:\selenium\hub.json 
nssm install seleniumnode java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -role node -nodeConfig C:\selenium\node.json 

它提供了輕鬆的方式,如果需要刪除服務:

nssm remove seleniumnode confirm 

添加目的地NSSM到PATH環境變量,並從控制檯管理運行

+0

當我想出NSSM代表什麼時,我笑了起來。 – 2015-05-05 06:11:42

+0

它工作,但截圖現在看起來像黑屏。 – SLY 2016-07-13 02:21:12

+0

看起來像這是IE問題 – SLY 2016-07-13 02:50:16

0

是的,你應該使用NSSM。重要的是,您可以在「登錄」選項卡或任何其他有效帳戶中添加您的Windows帳戶。如果使用「本地系統帳戶」選項運行節點,則會出現會話0問題。在正常的用戶會話中,節點在後臺運行時平穩無形:)