Как скрипачить автоматические тесты с использованием Java?
В настоящее время я работаю над автоматизацией моих тестов с использованием Selenium с TestNg и Java. Я могу сделать снимок экрана во время выполнения тестов, но есть ситуации, когда тест проходит, когда в идеале он должен был потерпеть неудачу.
Итак, есть ли какой-либо инструмент java, который может помочь в записи текущих тестов Selenium?
В принципе, я хочу добавить в мой фреймвер. Я много искал в Интернете /SO, но не нашел подходящих ресурсов. Любая помощь или предложение приветствуются.
Ответы
Ответ 1
Вы можете использовать java-код для записи своего тестового видео, для запуска этого кода вам также нужно добавить файл jar в свой проект:
Ссылка: Дорога к автоматизации
@BeforeSuite
public void startRecording() throws Exception {
GraphicsConfiguration gc = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.getDefaultConfiguration();
this.screenRecorder = new ScreenRecorder(gc,
new Format(MediaTypeKey, MediaType.FILE, MimeTypeKey, MIME_AVI),
new Format(MediaTypeKey, MediaType.VIDEO, EncodingKey, ENCODING_AVI_TECHSMITH_SCREEN_CAPTURE,
CompressorNameKey, ENCODING_AVI_TECHSMITH_SCREEN_CAPTURE,
DepthKey, 24, FrameRateKey, Rational.valueOf(15),
QualityKey, 1.0f,
KeyFrameIntervalKey, 15 * 60),
new Format(MediaTypeKey, MediaType.VIDEO, EncodingKey, "black",
FrameRateKey, Rational.valueOf(30)),
null);
this.screenRecorder.start();
}
@AfterSuite
public void stopRecording() throws Exception {
this.screenRecorder.stop();
}
Ответ 2
Другой вариант - дистанционно запускать ваши тесты на BrowserStack или Sauce Labs - обе службы имеют тестовую версию Video Recording.
Ответ 3
Один из подходов - сделать скриншот после каждого шага, а затем объединить их в видео. Ответы на этот вопрос предоставляют несколько библиотек-кандидатов для этой задачи.
Еще одна идея - это сделать скринкаст во время выполнения теста, используя какой-либо плагин для браузера. Но я не уверен, как начать процесс записи. Возможно, можно отправить короткий отрезок для начала/остановки записи с помощью селена, но я не уверен, что это сработает. Для таких плагинов я не могу предложить больше, чем поиск Google
Ответ 4
Вы можете проверить Selenium-Grid-Extras, созданный и используемый Groupon. Они создали фреймворк, способный выполнять то, что вы описываете, используя Selenium Grid. Я попробовал это сам однажды и, казалось, работал нормально. Возможно, это что-то, что подойдет вашим потребностям.
Ответ 5
Я отвечу на битбоб чуть дальше. Я повторно настроил среду селен-селен с серией groupon Selenium-Grid_Extras, и это работает как шарм. Есть несколько вопросов, на которые вам нужно ответить при настройке узлов/концентраторов в первый раз. После запуска java -jar Selenium-Grid-Extras-Jar.jar
в какой-то момент он запрашивает у вас количество видео, которое вы хотите записать по умолчанию 20. После этого тестовый запуск всей записи доступен через концентратор: порт, как показано здесь
Принимая это немного дальше, вы можете контролировать запись из своего теста с помощью groupon api. У вас есть гибкость. Существует открытый issue, но он дает вам возможность управлять этим, а также через службу отдыха
Ответ 6
Вы можете использовать класс Robot для автоматического снятия экрана с вашего java-кода, когда вам это нужно. Он является частью стандартной библиотеки java.
Создайте робота в начале теста:
Rectangle screen = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot robot = new Robot();
Затем, когда вам нужно сделать снимок экрана (каждый шаг в вашем тесте), просто позвоните:
BufferedImage capture = robot.createScreenCapture(screen);
ImageIO.write(capture, "jpg", new File("c:/some_distinct_name_designating_test_phase_and_number.jpg"));