带有HtmlUnit节点的WebDriver Grid挂钩节点CPU

问题描述:

我正在使用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倍左右。我猜测我有什么不对,应该是相当明显的。

感谢您的一切帮助和建议。

晚了一点,但:

要找出什么HtmlUnitDriver是干什么的,使用jstack <pid>获得线程转储。您可能会看到它已陷入僵局或陷入循环。

我已经有一些死锁&使用旧的HtmlUnit版本挂起的问题,但最新的Selenium server versions(2.31.0)正在使用HtmlUnit 2.11似乎已经解决了这些问题。

它看起来像你使用Selenium 2.15其中包括HtmlUnit 2.9,这可能是问题。