在Node上带有HtmlUnit的WebDriver Grid将Node的CPU固定在一起
本文关键字:Node CPU 在一起 Grid WebDriver HtmlUnit | 更新日期: 2023-09-27 18:19:11
我正在使用c#,使用Gallio/mbUnit编写一组非常简单的测试,打开浏览器,导航到google.com,在搜索框中输入'seleniumhq',然后单击搜索按钮。
创建主机:
java -jar '"C:''selenium-server-standalone-2.15.0.jar'" -role hub -port 4444
和my node with:
java -jar '"C:'selenium-server-standalone-2.15.0.jar'" -role node-hub http://[hostIP]:4444/grid/register -port 5556 -browser browserName=htmlunit,platform=ANY,version=firefox,maxInstances=1
我创建了webDriver实例,我使用:
driver = new RemoteWebDriver("http://localhost:4444/wd/hub",
DesiredCapabilities.HtmlUnitWithJavaScript ());
我正在监视我的节点机器,当测试开始时,CPU在运行1个测试时达到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%和峰值内存高达800000 k的远程节点上的HtmlUnit ?
我复制了相同的测试以创建10个相同的测试,如果我删除点击搜索按钮代码,则HtmlUnit测试需要65秒。该测试使用两个节点,每个节点的DegreeOfParallelism设置为10,MaxInstances设置为5。当我在Chrome上用同样的参数运行同样的测试时,它们在35秒内运行,我没有看到CPU发疯。有人对此有什么想法吗?HtmlUnit应该是大约4倍的速度从我所读到的。我猜我出了什么问题,应该是相当明显的。
感谢您的帮助和建议。
有点晚了,但是:
要找出HtmlUnitDriver正在做什么,使用jstack <pid>
获得线程转储。您可能会看到它被死锁或困在循环中。
我遇到了一些死锁&使用旧版本的HtmlUnit挂起问题,但最新的Selenium服务器版本(2.31.0)正在使用HtmlUnit 2.11,这似乎已经解决了这些问题。
看起来你使用的是包含HtmlUnit 2.9的Selenium 2.15,这可能是问题所在。