Автоматизировать разрешение экрана

У меня есть проект автоматизации тестирования с использованием инструмента автоматизации LeanFT (на Java). Эти тесты охватывают потоки пользовательского интерфейса веб-приложения.

Задание Jenkins выполняет эти тесты каждую ночь на удаленной подчиненной виртуальной машине RDP.

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

Я использую метод LeanFT VRI (визуальные реляционные идентификаторы) в своих тестах для идентификации объектов, у которых нет идентификатора, что означает идентификацию объектов на основе других объектов в модели DOM (ближайших к оси x / y). так что это, очевидно, связано с разрешением экрана.

Мой вопрос: как я могу гарантировать, что мои тесты начинаются с нужным разрешением экрана, независимо от разрешения последнего входа? Я предполагаю, что мне нужен способ переопределить существующее разрешение с помощью параметра Jenkins или добавить какую-то строку кода в мой тестовый проект для поддержки случая, разрешение которого отличается от 1920 x 1080.


person Udi    schedule 13.12.2018    source источник


Ответы (1)


Предполагая, что мы говорим здесь об ОС Windows, вы можете сделать это, вызвав некоторые функции WinAPI.

Как упоминалось в этом ответе, вы можете использовать:

  1. EnumDisplayDevices, чтобы выяснить, какие дисплеи у вас есть.
  2. EnumDisplaySettings, чтобы получить список доступных разрешений для ваших дисплеев. 3. ChangeDisplaySettings, чтобы установить необходимое разрешение.

Чтобы вызвать эти функции в Java, вы можете использовать Java Native Access (JNA). Как они упоминают:

Полная ссылка на JNA (включая обзор и подробности использования) находится в JavaDoc. Прочтите обзор . [...] вам может быть проще найти ответы на уже решенные проблемы в StackOverflow.

person Adelin    schedule 16.01.2019