Сетка WebDriver с HtmlUnit на узле привязывает процессор узла - PullRequest
3 голосов
/ 03 января 2012

Я использую C #, с Gallio / mbUnit, чтобы написать очень простой набор тестов, которые открывают браузер, перейдите на google.com, введите «seleniumhq» в поле поиска и нажмите кнопку поиска.

Я создаю свой хост с:

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

, а мой узел с:

java -jar \ "C: \ selenium-server-standalone-2.15.0.jar\ "-role узел -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 ());

Я наблюдаю за работой моего узла, и когда тест начинается, ЦП привязывается к 99%только с запуском теста 1. Я получаю тайм-ауты при ожидании отображения кнопки поиска ... она есть, просто не видна, даже через 40 секунд:

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

Любые мысли о том, почему этот элемент не отображаетсяотображается для HtmlUnit последовательно?

Есть мысли о том, почему ЦП привязывается к 100% или близко к нему?обнаруживает ли HtmlUnit в памяти до 800 000 КБ на удаленном узле?

Я скопировал один и тот же тест, чтобы создать 10 идентичных тестов, и если я удалю код кнопки поиска по щелчку, тесты HtmlUnit займут 65 секунд.В этом тесте используются два узла: для DegreeOfParallelism установлено значение 10, а для MaxInstances установлено значение 5 для каждого узла.Когда я запускаю одни и те же тесты с теми же параметрами в Chrome, они запускаются за 35 секунд, и я не вижу, что процессор сходит с ума.У кого-нибудь есть идеи по этому поводу?Предполагается, что HtmlUnit будет примерно в 4 раза быстрее, чем я прочитал.Я предполагаю, что у меня что-то не так, что должно быть довольно очевидным.

Спасибо за помощь и предложения.

1 Ответ

0 голосов
/ 06 марта 2013

Немного поздно, но:

Чтобы узнать, что делает HtmlUnitDriver, получите дамп потока, используя jstack <pid>. Вы, вероятно, увидите, что он заблокирован или застрял в цикле.

У меня были некоторые проблемы с блокировкой и зависанием при использовании старых версий HtmlUnit, но последние версии Selenium server (2.31.0) используют HtmlUnit 2.11, который, похоже, решил эти проблемы.

Похоже, вы использовали Selenium 2.15, который включает HtmlUnit 2.9, что может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...