Как транслировать автоматизированные тесты с использованием Java?
В настоящее время я работаю над автоматизацией моих тестов с использованием Selenium с TestNg и Java. Я могу сделать снимок экрана во время выполнения тестов, но в некоторых ситуациях тест проходит успешно, в идеале он должен был быть неудачным.
Итак, есть ли какой-нибудь Java-инструмент, который может помочь в записи текущих тестов Selenium?
По сути, я хочу добавить скриншот к моей структуре. Я много искал в сети /SO, но не смог найти соответствующие ресурсы. Любая помощь или предложение приветствуется.
6 ответов
Вы можете использовать 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();
}
Другим вариантом может быть запуск ваших тестов удаленно в BrowserStack или Sauce Labs - обе службы имеют доступ к видеозаписи для тестового запуска.
Один из подходов - сделать скриншот после каждого шага, а затем объединить их в видео. Ответы на эти вопросы предоставляют несколько библиотек-кандидатов для этой задачи.
Другая идея заключается в том, чтобы на самом деле сделать скринкаст во время выполнения теста, используя некоторый плагин для браузера. Но я не уверен, как начать процесс записи. Возможно, можно отправить ярлык для начала / остановки записи с селеном, но я не уверен, что это сработает. Для таких плагинов я не могу предложить больше, чем поиск в Google
Вы можете проверить https://github.com/groupon/Selenium-Grid-Extras, созданный и использованный Groupon. Они создали фреймворк, способный делать то, что вы описываете, используя Selenium Grid. Я сам попробовал один раз и, похоже, работал нормально. Может быть, это то, что подойдет вам.
Я возьму ответ thebobblob немного дальше. Я недавно сконфигурировал среду селен-грид-хаба с помощью Selenium-Grid_Extras от groupon, и она работает как шарм. Есть несколько вопросов, на которые вам нужно ответить при первоначальной настройке узлов / концентраторов. После запуска java -jar Selenium-Grid-Extras-Jar.jar
в какой-то момент он запрашивает количество видео, которое вы хотите записать, которое по умолчанию составляет 20. После тестового прогона все записи доступны через порт hub:port, как показано здесь
Пройдя немного дальше, вы можете управлять записью из своего теста, используя groupon api. У вас есть гибкость. Есть открытая проблема, но она дает вам возможность манипулировать этим также через службу отдыха
Вы можете использовать класс 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"));