Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Окно браузера не реагирует на команды изменения размера, если тесты запускаются через Jenkins


(Galina.Bratchik) #1

Здравствуйте!

В моих тестах на Java+Selenium Webdriver я устанавлтю размер окна браузера посредством команд

driver.manage().window().setSize(LaunchConfig.getWindowSize());где getWindowSize:

 

public static Dimension getWindowSize() { return new Dimension(windowWidth, windowHeight); }

Сборка с тестами собирается через ant. При локальном запуске все ок, размер окна устанавливается корректно.

 
В Jenkins настроены задачи, которые вызывают ant, соответсвенно, собирают проект и прогоняют тесты.
Проблема в том, что при этом команды изменения размера не срабатывают. И окно остается минимального размера.
 
Это важно для меня так как тесты снимают скриншоты и сравнивают текущий внешний вид страницы с сохраненным примером для установленного размера окна браузера. И при запуске тестов через Jenkins все подобные тесты валятся.
 
Может быть есть какая-то настройка самого Jenkins или, возможно, плагин, который бы управлял размером окна бразузера?
 
Заранее спасибо!


(Sergey Korol) #2

На каких ОС и браузерах запускаете? Знаю точно, что под маком ресайз для того же хрома вообще не работает. А максимизировать пробовали? Работает нормально?


(Galina.Bratchik) #3

Запускаю на Win7 с Chrome, FireFox и IE. Максимизировать попробую, но все же это не сосвсем то, что мне нужно..


(apetrovskiy) #4

Таки в чём проблема? Любой приличный фреймворк для оконного тестирования на винде подойдёт.

К примеру, у меня на Win 7 запущено: 1 инстанс файрфокса, 2 инстанса хрома, 1 инстанс сафари (полноэкранный режим) - всё основано на реальных событиях и даже происходит прямо сейчас.

Допустим, MS UI Automation. Очевидный код

Get-UIAWindow -pn firefox | Invoke-UIATransformPatternResize -TransformResizeWidth 500 -TransformResizeHeight 500
Get-UIAWindow -pn chrome | Invoke-UIATransformPatternResize -TransformResizeWidth 500 -TransformResizeHeight 500
Get-UIAWindow -pn safari | Invoke-UIATransformPatternResize -TransformResizeWidth 500 -TransformResizeHeight 500
уменьшает габариты файрфокса и хромов. Сафари на полный экран. Лечим так: переводим в нормальный режим и меняем размеры следующей строчкой кода (заодно сделаем больше браузеров в виде нескольких окон):

Get-UIAWindow -ProcessName safari,chrome,firefox,iexplore,opera | %{ $_.GetCurrentPattern([System.Windows.Automation.WindowPattern]::Pattern).SetWindowVisualState([System.Windows.Automation.WindowVisualState]::Normal); $_ | Invoke-UIAWindowTransformResize -TransformResizeWidth 500 -TransformResizeHeight 500};

 

А ещё проблема может быть не в размере, а в том, что окно частично находится за пределами экрана.

 

 

 

 


(Mykhailo Poliarush) #5

jenkins и ant - это не проблема в данном случае

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

 

еще возможный вариант для вас, напрямую выполнить изменение размера окна через javascript

если посмотреть на ньюансы использования

 

Each of these commands accept the window handles returned by "getWindowHandles" and "getWindowHandle". In addition, the window handle may be "current", in which case the window that commands are currently being handled by must be acted upon.

The "width" and "height" values refer to the "window.outerheight" and "window.outerwidth" properties. For those browsers that do not support these properties, these represent the height and width of the whole browser window including window chrome and window resizing borders/handles.

After setWindowSize, the browser window must not be in the maximised state.

After maximizeWindow, the browser window must be left as if the maximise button had been pressed; it is not sufficient to leave the window "restored", but with the full screen dimensions.

After fullscreenWindow, the browser window must be in full-screen mode. For those operating systems that support the concept, this must be equivalent to if the user requested the window be full screen. If the OS does not support the concept of full-screen, then this command is a synonym for "maximizeWindow".

If a request is made to resize a window to a size which cannot be performed (e.g. the browser has a minimum, or fixed window size, or the operating system does not support resizing windows at all as is the case in many phone OSs), an UnsupportedOperation status code must be returned.

то видим, что не вовсем случаях изменение размера может сработать

в общем, я еще вам рекомендую попробовать через javascript


(Mykhailo Poliarush) #6

ну и javascript забыл добавить 

 

function quarter() {
   window.resizeTo(window.screen.availWidth/2,
      window.screen.availHeight/2);
 }

https://developer.mozilla.org/en-US/docs/DOM/window.resizeTo