t.me/atinfo_chat Telegram группа по автоматизации тестирования

Разное разрешение на разных вкладках хрома

Теги: #<Tag:0x00007fd76a4b7f50> #<Tag:0x00007fd76a4b7e88> #<Tag:0x00007fd76a4b7d98> #<Tag:0x00007fd76a4b7cd0> #<Tag:0x00007fd76a4b7b90> #<Tag:0x00007fd76a4b7a78>

При переходе в один из разделов приложения, он открывается в новой вкладке браузера. И разрешение этой вкладки уже не как у первой(1366 на 768), а 800 на 600 из-за чего куча элементов перестают быть в области видимости, и тесты падают.

Браузер стартую с такой конфигурацией и первая вкладка открывается именно в этом разрешении.

Configuration.startMaximized = false;
Configuration.browserSize = "1366x768";

Локально на винде все окей, и новая вкладка открывается в одном и том же окне браузера. А при прогоне на линуксовом серваке в режиме headless происходит такое. Кто-то сталкивался , как решали?

Что-то я не понимаю. Размер бывает не у вкладки, а у окна браузера.
Другими словами, все вкладки в браузере всегда одного и того же размера.

Как возможно, что одна вкладка 1366 на 768, а вторая 800 на 600?

как я это выяснил:
-открываю приложение на первой вкладке делаю скрин, в отчете скриншот 1366x768
-нажимаю кнопку, она открывает новый сайт в новой вкладке
-я перехожу туда с помощью switchTo().window(1);
-делаю там скриншот и этот скриншот в отчете имеет разрешение 800x600
почему я начал это выяснять? потому что тесты на вкладке 2 падают, при таком разрешении уже разметка плывет.
находил в инете, Вам задавали такой же вопрос уже год назад, но решения там нет, использую пока что изменение размера окна прям в шаге теста, где происходит переход в новую вкладку

Всё просто, вы браузер на первом шаге (когда руками пробуете воспроизвести) не делайте во весь экран, а откройте в виде плавающего окошка. Проблема в приложении, в нём где-то меняется размер окна. Как исправить быстро - добавить, после свитча в закладку, ресайз окна. Более долго - написать репорт разрабам.

да, после свича добавил ресайз.
к сожалению, руками не воспроизвелось как вы описали

Что значит “решения там нет”? Решение там как раз есть.
Приложение реально меняет размер экрана. Если вы считаете, что это неправильно (ведь половина элементов становится невидимой) - заводите баг. Ваш тест нашёл баг - это же здорово!

я, конечно, заведу его, когда руками воспроизведу, я до сих пор не понимаю природу происходящего

при прогоне кейса руками, новая вкладка открывается в том же окне с тем же разрешением

Значит, проблема в браузере на линухе, может, обновить? Либо, попробовать другую версию, браузер.
Больше похоже что открывается именно другое окно, как всякие там казино в фоне, а не закладка.
Вы локально же в инкогнито проверяете? С пустым профилем? Я к тому что у вас локально может стоит что новые окна открывать только в закладках, а по умолчанию эта настройка, вроде, выключена.

кстати локально хром 86 стоит, на линухе 85, попробую завтра
сначала еще проверю какое разрешение становится у первой вкладки

а может ли быть такое что там открывается новая вкладка вообще в новом инстансе хрома?

а если там открывается в новом окне, то switchTo().window(1); может и между окнами переключать? а не только между вкладками?

А свитчу не важно, да он может и так.

понял,спасибо

Как вариант, проверьте capabilities. Я знаю, что у FF есть настройка “открывать страницу в новой табе / новом окне”. Уверен, что у хрома есть похожая настройка и она, вполне возможно, управляется capabilities или флагами.

обновил браузер и хромдрайвер - проблема та же, в одном чате подсказали, что за это отвечает атрибут у ссылки - target, но локально она не открывается в новой вкладке

Нашел только такое, получается чтоб открывалось в новом окне , надо указывать это, а я не указываю

--new-window 

Launches URL in new browser window.

(https://code.google.com/p/chromium/codesearch#chromium/src/chrome/common/chrome_switches.cc&q=kOpenInNewWindow&sq=package:chromium&type=cs)

@asolntsev @BabyRoot Проблему решил так:
удалил из метода-сетапа браузера строку

Configuration.browserSize = "1366x768";

и добавил

System.setProperty("chromeoptions.args", "--window-size=1366x768");

после этого оба окна браузера открываются в этом размере
Спасибо за помощь

1 Симпатия

Совершенно непонятно, как это могло повлиять.
Значит, в изначальной постановке проблемы вы что-то важное недоговорили.

а устанавливая размер окна через

Configuration.browserSize = "1366x768";

под капотом это все равно сетится в “chromeoptions.args” ?

вы на линуксе то проверяли руками ваш кейс?
а по поводу прокидывания значений – дебаг есть ведь, все селениумные переменные доступные в IWebDriver, там капабилити все увидеть можно, может что-то по пути переопределяется

на линуксе нет GUI - не могу там проверить руками