JMeter с jp @ gc Firefox WebDriver: другой размер браузера при удаленном выполнении

Я использую JMeter с установленным jp @ gc WebDriver (v1.3.1) и Firefox -driver (версия Firefox: 31.0). Мой тест-план отлично работает, когда я выполняю его прямо из JMeter. Я вижу, как открываются браузеры, и могу следить за выполнением теста.

Когда я запускаю его через JMeter-Server, хотя при удаленном выполнении тест не воспроизводится в одном сэмплере со следующим сообщением об ошибке:

ОШИБКА - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler: время ожидания истекло через 300 секунд ожидания кликабельного элемента: By.id: Wizard

Я настроил сэмплер для создания снимка экрана при ошибке, но это выглядит нормально. Сэмплер ожидает, пока элемент станет активным, прежде чем фактически пытаться щелкнуть его.

Странная вещь - как упоминалось выше - этого не происходит, когда я выполняю тест напрямую (то есть из графического интерфейса JMeter).

Одно отличие, которое я заметил для удаленного выполнения, заключается в том, что браузер фактически не открывается (как видно) на целевой машине. Тем не менее, я вижу, что процесс выполняется с параметром -foreground. Вероятно, это нормально, но для целей отладки я хотел бы посмотреть, что на самом деле происходит. Это может помочь определить, что отличается в этом сценарии.

Любые идеи о том, как я могу открыть браузер и в этом случае? Или, в качестве альтернативы, какие-либо идеи о том, чем отличается локальное и удаленное выполнение?

Изменить: я думаю, что отследил это до того, что размер браузера отличается при прямом и удаленном выполнении. Это стало очевидным после того, как я переключился с драйвера Firefox на драйвер Chrome. Тест по-прежнему не удался при удаленном выполнении, но на снимке экрана показаны как горизонтальная, так и вертикальная полосы прокрутки. Firefox этого не сделал, но скриншот, по-видимому, не показывает всей правды.


person geld0r    schedule 11.03.2016    source источник


Ответы (1)


Проблема действительно вызвана разным размером браузера при сравнении прямого и удаленного выполнения. Элемент, который я хотел щелкнуть в своем тесте, просто находился вне экрана при удаленном выполнении, и поэтому его нельзя было щелкнуть. Однако его можно найти и оно также соответствует условию elementToBeClickable, что немного противоречит интуиции.

Чтобы избежать этого, я специально установил "безопасный" и фиксированный размер браузера при запуске теста:

WDS.browser.manage().window().setPosition(new pkg.Point(0, 0))
WDS.browser.manage().window().setSize(new pkg.Dimension(1280, 1024))

Благодаря этому прямому и удаленному выполнению будут одинаковые размеры, и тесты будут выполняться, как ожидалось. Обратите внимание, что

WDS.browser.manage().window().maximize()

не работает в удаленном исполнении! Похоже, это каким-то образом уменьшает размер экрана, даже если он был ранее установлен на «безопасный» размер.

person geld0r    schedule 14.03.2016