2012-01-03 35 views
3

我正在使用C#,使用Gallio/mbUnit編寫一組非常簡單的打開瀏覽器的測試,導航到google.com,在搜索框中鍵入「seleniumhq」並點擊搜索按鈕。帶有HtmlUnit節點的WebDriver Grid掛鉤節點CPU

我創造我的主機:

java -jar \"C:\\selenium-server-standalone-2.15.0.jar\" -role hub -port 4444 

和我的節點有:

Java的罐子\ 「C:\硒服務器獨立-2.15.0.jar \」 - 角色節點 -hub的http:// [主機IP]:4444 /格/註冊-port 5556 -browser browserName =的HtmlUnit,平臺= ANY,版本=火狐,MAXINSTANCES = 1

創建我webdriver的情況下,我用:

驅動=新RemoteWebDriver( 「HTTP://本地主機:4444/WD /集線器」, DesiredCapabilities.HtmlUnitWithJavaScript());

我正在監視我的節點機器,並且當測試開始時,只有1次測試運行,CPU掛鉤到99%。等待搜索按鈕,顯示當我得到超時......它的存在,只是不可見,甚至40秒後:

var wait = new WebDriverWait(WebDriver, new TimeSpan(0, 0, 0, 40)); 
wait.Until(m => m.FindElement(By.Name("btnG")).Displayed); 

爲什麼該元素是不可見的一貫的HtmlUnit什麼想法?

對於爲什麼CPU在100%或接近100%的情況下以及在遠程節點上HtmlUnit的內存峯值高達800,000K時有何想法?

我有複製相同的測試,以創建10個相同的測試,如果我刪除單擊搜索按鈕代碼,HtmlUnit測試需要65秒。此測試使用兩個節點,DegreeOfParallelism設置爲10,MaxInstances設置爲5,用於每個節點。當我使用與Chrome瀏覽器相同的參數運行相同的測試時,它們在35秒內運行,我沒有看到CPU變得瘋狂。有人對此有任何想法嗎? HtmlUnit應該是我讀過的4倍左右。我猜測我有什麼不對,應該是相當明顯的。

感謝您的一切幫助和建議。

回答

0

晚了一點,但:

要找出什麼HtmlUnitDriver是幹什麼的,使用jstack <pid>獲得線程轉儲。您可能會看到它已陷入僵局或陷入循環。

我已經有一些死鎖&使用舊的HtmlUnit版本掛起的問題,但最新的Selenium server versions(2.31.0)正在使用HtmlUnit 2.11似乎已經解決了這些問題。

它看起來像你使用Selenium 2.15其中包括HtmlUnit 2.9,這可能是問題。