Я работал с 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, он не проверен