2015-11-20 6 views
12

В настоящее время я работаю над автоматизацией моих тестов с использованием Selenium с TestNg и Java. Я могу сделать снимок экрана во время выполнения тестов, но есть некоторые ситуации, когда тест проходит, когда в идеале он должен был потерпеть неудачу.Как скрипачить автоматизированные тесты с использованием Java?

Итак, есть ли какой-либо инструмент java, который может помочь в записи текущих тестов Selenium?

В принципе, я хочу добавить в мой фреймвер. Я много искал в Интернете/SO, но не нашел подходящих ресурсов. Любая помощь или предложение приветствуются.

+0

ok 2 квестов. Вы имеете в виду запись видео с помощью screencast? Вы используете сетку? – Shamik

+0

Да. Запишите видео. Не использовать сетку, а использовать внутреннюю структуру. – Manu

+1

Не совсем ответ на ваш вопрос, но вроде альтернативной идеи. По моему опыту, даже просмотр тестового запуска в интерактивном режиме может не помочь, потому что вы не видите, почему что-то произошло или не произошло (т. Е. Вы видите пользовательский интерфейс, но не DOM HTML). Во-вторых, сложно синхронизировать сценарий с экранной записью, вы можете только предположить. Так что я нашел более полезным 1 - сохранение содержимого HTML на различных проблемных этапах ('driver.getPageSource()'); и 2 - инвестирование в ведение журнала, что дает понять, что тест делает в каждый момент и почему он принимает этот или другой путь. –

ответ

2

Один из подходов - сделать снимок экрана после каждого шага, а затем объединить их в видео. Ответы на вопросы this questions содержат несколько библиотек-кандидатов для этой задачи.

Другой идеей было бы сделать скринкаст во время проведения теста, используя какой-либо плагин для браузера. Но я не уверен, как начать процесс записи. Возможно, можно отправить короткий отрезок для начала/остановки записи с помощью селена, но я не уверен, что это сработает. For such plugins I can't offer more than a google search

+0

Спасибо за ссылку. Я использовал Xuggler для создания видео, но он не очень хорошо интегрируется с моей картой из-за множественного снимка экрана. Можете ли вы также предложить какой-то инструмент, который сам записывает видео? – Manu

+0

Обновлен мой ответ, чтобы отразить то, что я могу предложить в этом направлении. –

3

Другой вариант заключается в том, чтобы дистанционно запускать ваши тесты на BrowserStack или Sauce Labs - обе службы имеют тестовый запуск. Имеется видеозапись.

+0

Мы уже использовали Saucelabs для запуска тестов удаленно, но в конечном итоге они дорогостоящие для регулярных тестов. – Manu

2

Вы можете зарегистрироваться Selenium-Grid-Extras, создана и использована Groupon. Они создали фреймворк, способный выполнять то, что вы описываете, используя Selenium Grid. Я попробовал это сам однажды и, казалось, работал нормально. Возможно, это то, что подойдет вашим потребностям.

+0

Я бы попробовал. Но, я ищу инструмент screencast, не совсем новую структуру. В любом случае спасибо. – Manu

1

Я возьму thebobblob's ответ немного дальше. Я повторно настроил среду селен-сетки селена с groupon's Selenium-Grid_Extras, и он работает как шарм. Есть несколько вопросов, на которые вам нужно ответить при настройке узлов/концентраторов в первый раз. После запуска java -jar Selenium-Grid-Extras-Jar.jar в какой-то момент он просит вас количество видео, которое вы хотите записать, который по умолчанию 20. После, тест запустить все записи доступны через хаб: порт, как показано here

Принимая его в немного дальше, вы можете управлять записью из своего теста с помощью groupon api. У вас есть гибкость. Существует открытый issue, но он дает вам возможность управлять этим, а также через службу отдыха.

0

Вы можете использовать класс 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")); 
4

Вы можете использовать Java код для записи вашего тестового видео, для запуска этого кода вам также необходимо добавить файл jar в проект: Код ссылки: Road to automation

@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(); 
    } 
Смежные вопросы