Настройка ширины устройства для удаленного веб-драйвера в Selenium

Я использую Selenium grid 40 с удаленным драйвером Firefox, который работает в Windows 7. Я также использую C# API. Мне было интересно, как установить ширину устройства в безголовом браузере Firefox. Ширина устройства меньше, чем максимальная ширина ipad, и это приводит к тому, что он подбирает специфичный для ipad css, который определен, как показано ниже:

@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait) {
  /* For portrait layouts only */
}

@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape) {
  /* For landscape layouts only */
}

Я уже изменил размер окна, используя:

driver.Manage().Window.Size = new System.Drawing.Size(1290,900)

Но он по-прежнему подхватывает эти директивы css.

Дополнительная информация: Мой узел сетки — это виртуальная машина, в которую на самом деле никто не входит. Я удаленно запускаю сетку селена, и это может быть причиной того, что ширина устройства мала. по умолчанию это может быть наименьшее разрешение для окон. Если есть способ изменить это, это может помочь мне, но я не знаю об этом.

Обновление: я попытался установить все экземпляры DefaultSettings.XResolution, DefaultSettings.YResolution и DefaultSettings.BitsPerPel в реестре на 1290, 900 и 16 с помощью сценария powershell и перезагрузить компьютер, но это не сработало.


person Edward Mehr    schedule 08.07.2014    source источник


Ответы (2)


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

Ниже приведен пример сервиса Xvfb с разрешением 1024x768 и глубиной 24. .github.com/dloman/931d65cbb79b00593ac3dd5d0cdf37d9

person bheussler    schedule 20.11.2018

Мой опыт ограничен использованием Python-реализации Selenium, поэтому это может не сработать для вас, но вы можете использовать driver.set_window_size(width, height) перед выполнением действия driver.get(), которое загрузит нужную страницу.

Ключом является порядок, в котором вы выполняете эти действия: вы хотите указать селену изменить размеры браузера перед загрузкой страницы, потому что в противном случае вы имитируете то же поведение, что и изменение размера окна браузера. после начальной загрузки страницы. Как вы, возможно, знаете, при изменении размера окна браузера для активации некоторых «адаптивных» функций требуется перезагрузка страницы.

person Cronax    schedule 10.02.2015
comment
Я считаю, что driver.set_window_size(x,y) в python такой же, как driver.Manage().Window.Size = new System.Drawing.Size(x,y) в C#. Я уже пробовал это. Я хочу установить размер устройства, а не размер окна, чтобы такие директивы, как min-device-width, правильно подбирались. Размер устройства безголового драйвера, по-видимому, по умолчанию соответствует жестко запрограммированному размеру, который нельзя настроить. Или я еще не разобрался. - person Edward Mehr; 14.02.2015