Есть ли альтернатива использованию window (). SetSize в Selenium? - PullRequest
0 голосов
/ 03 января 2019

С последним обновлением браузера Chrome наши тесты пользовательского интерфейса для мобильных браузеров не проходят в браузере Chrome для Windows.

Я использовал это: . Driver.manage () окно () SetSize (размер).

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

Но сайт просто отлично загружается на реальных мобильных устройствах в браузере Chrome.

Есть ли альтернатива, доступная в селене, которая переопределяет минимальную ширину браузера по умолчанию, установленную браузером Chrome.

. * * +1010 driver.manage () окно () SetSize (измерение);.

Я пытаюсь установить ширину браузера на 385, но в Windows Chrome он автоматически сбрасывается на 540, что приводит к сбою проверок

1 Ответ

0 голосов
/ 03 января 2019

Я работал с Selenium / ChromeDriver и Python, некоторое время назад. Надеюсь, что это все еще применимо.

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

В моем случае настройка разрешения окна браузера работала хорошо с Chrome в режиме рабочий стол , но у меня были проблемы с мобильным режимом Chrome. В мобильном режиме я не могу установить разрешение с помощью setSize(), оно фактически игнорировалось, и размер окна браузера всегда равен разрешению экрана для «имитированного» * ​​1014 * мобильного телефона. телефон .

Думая о, это имеет смысл.

По этой причине Я призываю вас дважды проверить / убедиться, что ваши тесты селена в мобильном режиме эффективно меняют размер окна браузера - то есть, боюсь, вы всегда выполняете рендеринг веб-страницы с тем же разрешением ... разрешение экрана (симулированного) мобильного телефона.

По этой причине в своем коде я использовал код setSize() только для операций / тестов в режиме рабочего стола.

Для мобильного режима Chrome мой код создает новый экземпляр ChromeDriver для каждого разрешения окна браузера (x, y), изменяя разрешение экрана мобильного телефона на (x, у); Вы можете сделать это с помощью экспериментальной опции ChromeDriver, код следующий.

Java-код для разрешения экрана x, y = 800,1280:

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 800);
deviceMetrics.put("height", 1280);
deviceMetrics.put("pixelRatio", 1.0);    
Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19");

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);

Ваш код должен остановить экземпляр драйвера и заново создать новый для каждого протестированного разрешения.

Я не нашел способа сделать это онлайн с тем же экземпляром: -)

Пожалуйста, поделитесь своими выводами,

Привет

P.s : я всегда использовал pixelRatio = 1.0, я не напоминаю точное значение, но полагаю, что это наиболее разумное значение для современных устройств.

P.s.2 : предоставленный код является «отображением» моего кода Python, он не проверен

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