Подгонка объектов на экране окна с использованием Selenium Java - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь разместить все объекты в окне (браузер Chrome).Вручную, когда я делаю это (размеры, которые я использую, это 1024X786 с помощью переключателя, но когда я автоматизирую его, используя то же измерение, он не показывает то же самое, что было вручную.

код:

driver = new ChromeDriver();
Map<String, Object> deviceMetrics = new HashMap<String, Object>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);
Map<String, Object> mobileEmulation = new HashMap<String, Object>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mobile S");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
System.out.println("Driver is now ChromeDriver");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

Нижний колонтитул теряется в этом. То, что я получаю: enter image description here

То, что я должен получить, это: enter image description here

Другой код, который я использовал:

driver.manage().window().setSize(new Dimension(1024, 786));

Может кто-нибудь помочь, пожалуйста? Спасибо

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Необходимо передать связанную конфигурацию mobileEmulation в экземпляре класса ChromeOptions следующим образом:

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);

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);

Примечание. Тестирование мобильного веб-сайта на настольном компьютере с помощью мобильной эмуляции может быть полезным, нотестеры должны знать, что есть много тонких отличий, таких как:

  • Полностью различный графический процессор, который может привести к значительным изменениям производительности;
  • Мобильный интерфейс не эмулируется (в частности,скрытие панели URL влияет на высоту страницы);
  • Всплывающее окно устранения неоднозначности (при выборе одной из нескольких сенсорных целей) не поддерживается;
  • Многие аппаратные API (например, событие directionalchange) недоступны.

Ссылка

Мобильная эмуляция

tl;dr

Эмуляция мобильного устройства связана с известной проблемой Сбой теста testClickElement из класса MobileEmulationCapabilityTest в Chromium для всех платформ

0 голосов
/ 13 февраля 2019

Установка размера окна не будет работать, если вы хотите разместить содержимое веб-страницы в окне без прокрутки. Если это большая страница.

Что вам нужно сделать, это настроить уровень масштабирования, чтобы соответствоватьвсе содержимое в окне.

Вы можете сделать это, как показано ниже:

WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));

После этого обязательно сбросьте уровень масштабирования, как показано ниже:

html.sendKeys(Keys.chord(Keys.CONTROL, "0"));

Чтов основном здесь происходит то же самое, что и при нажатии Control и - на клавиатуре при фокусировке на браузере.

Попробуйте, если это служит вашимцель.

...