Есть ли альтернатива использованию window (). SetSize в Selenium?

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

Я использовал это: driver.manage (). window (). setSize (размер);

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

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

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

driver.manage (). window (). setSize (размер);

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
725
1

Ответы 1

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

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

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

Если подумать, это имеет смысл.

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

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

Для мобильного режима Chrome: мой код создает новый экземпляр ChromeDriver для каждого разрешения окна браузера (x, y), изменив разрешение экрана мобильного телефона на (x, y); вы можете сделать это с помощью экспериментальной опции 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);

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

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

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

С Уважением

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

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

PS-Zero: Похоже, что «Пожалуйста, поделитесь своими выводами» теперь означает: «Пожалуйста, проголосуйте против, не давая минимальной обратной связи» :-)
Fabiano Tarlao 08.10.2019 21:25

Другие вопросы по теме