2009-10-16 63 views
4

我正在嘗試爲QA部門設置CI環境。他們使用SeleniumRC在IE和FF瀏覽器中運行UI測試來測試一些Web應用程序。我已成功將其配置爲按照here所述的Windows服務運行。但是,當我運行測試它掛起。我可以在進程列表中看到由Selenium服務產生的iexplore.exe進程,但沒有更多事情發生。沒有瀏覽器窗口出現,Windows事件日誌中沒有條目。我做了很多Google搜索,並且按照我的理解,問題在於與桌面互動。我嘗試使用「允許服務與桌面交互」複選框集以及具有本地管理員權限的常規用戶帳戶在SYSTEM帳戶下運行該服務。所以我的問題是,如果有可能呢?將UI SeleniumRC測試作爲CI過程的一部分運行

+0

解決! QA的人剛剛將Selenium RC更新到1.0.1(0.9.0),它的工作方式非常神奇! – UserControl 2009-10-16 13:46:07

回答

2

我對運行任何應該與桌面應用程序交互的Windows服務存在懷疑。 Windows服務在他們自己的沙箱中運行;他們不應該與用戶的桌面或其應用程序進行交互。要做到這一點需要特別的努力來與服務進行通信,所以如果可能的話,我會認爲會有某種桌面客戶端運行,作爲瀏覽器和Windows服務之間的聯絡。

雖然我不能告訴你它不起作用,因爲如果人們在寫博客,這顯然是可能的。

順便說一句,爲什麼它需要作爲Windows服務運行? Selenium是如何建立自動化的,或者你可以在沒有Windows服務的情況下完成它?因爲我認爲這將是兩點之間的最短距離。

+0

謝謝,羅伯特!他們需要儘可能地自動化,因此Selenium測試是整個構建過程的一部分(構建 - >部署 - >測試)。該服務可以幫助讓環境獨立於人類(例如,無需每次重新啓動服務器時手動登錄並啓動Selenium)。但是,我花了很多時間徒勞,所以我就這樣離開了。 – UserControl 2009-10-16 08:37:25

0

我的建議是擁有一臺運行Selenium RC的專用機器(或虛擬機)。根據我的經驗,最好讓Selenium以交互方式運行,而不是以無頭模式運行。

+0

事實上,他們有幾個Selenium RC盒子(每個盒子都有幾個不同配置的虛擬機)。更多的服務器 - >更多的手動工作,我希望它可以自動化。 – UserControl 2009-10-16 08:39:44

4

在我們的組織中,我們有一個持續集成服務器(巡航控制)運行構建,包括Selenium RC測試。 CI服務器作爲Windows服務運行(在MS Windows 2003 Server上),Selenium測試只是測試套件的一部分。

這是一個非常簡單的設置,坦率地說我沒有理由放棄它。目前在我們的設置中,Selenium服務器(和客戶端)直接從測試中啓動(但我們曾經將Selenium作爲單獨的服務)。

在Java代碼中(實際上在超類中的所有網絡測試),我們做這樣的事情:

// to start the server 
RemoteControlConfiguration config = new RemoteControlConfiguration(); 
config.set(...) // set the serverHost and port 
... 
SeleniumServer server = new SeleniumServer(config); 
server.start(); 

// and then to start the client 
Selenium selenium = new DefaultSelenium(serverHost, port, "*firefox", "http://www.google.com"); 
selenium.start(); 
selenium.open("http://www.google.com"); 

// now the browser should be visible for you (if you run it locally, not as a service) 

所以我建議你嘗試以下(任何一種語言,你正在使用):

  1. 嘗試從獨立應用程序運行Selenium服務器和客戶端。瀏覽器應該顯示爲一個窗口。根據您的需要調整設置(瀏覽器類型等)。

  2. 嘗試將代碼合併到您的測試框架(xUnit或其他)中。手動運行它們。結果應該是一樣的。

  3. 然後,您可以嘗試從持續集成運行測試。將CI服務器作爲服務運行,並讓它構建您的項目。瀏覽器不可見,但測試運行不是必需的,不是嗎?

注: 如果你想偷看什麼硒是幹什麼的,我相信這將是UNIX機器上更容易。您可以指出測試使用您選擇的X-server DISPLAY - 假的或連接到某個顯示器的真實服務器。

+0

感謝您的回答!我們在這裏的配置(Win2003和CruiseControl)幾乎相同,只是它是.NET平臺(測試使用NUnit編譯爲c#代碼)。所有工作都可以在本地或遠程模式下正常工作,但只有在通過控制檯啓動Selenium時(瀏覽器顯示並且測試爲綠色)。但是,如果我們將它作爲一個Windows服務啓動它不起作用。只要我可以切換回這個任務,我會嘗試從代碼中啓動服務器的建議。 – UserControl 2009-10-16 10:09:33

+0

我檢查了CruiseControl服務運行的用戶的權限。在這裏它是'分佈式COM用戶,高級用戶,遠程桌面用戶,TelnetClients,用戶'的成員。不太確定它們是否都需要。我幾乎可以肯定,沒有其他的用戶權限自定義。 – 2009-10-16 10:17:15

+0

感謝您的幫助!問題在於Selenium RC已經過時。版本1.0.1作爲服務就好了! – UserControl 2009-10-16 13:48:01

相關問題