如何使用Java进行自动化测试?

时间:2015-11-20 14:58:06

标签: java selenium testng screencast

我目前正致力于使用Selenium与TestNg和Java自动化我的测试。我可以在测试运行时截取屏幕截图,但在某些情况下,测试会在理想情况下通过,但应该失败。

那么,是否有任何java工具可以帮助记录正在运行的Selenium测试?

基本上,我想在我的框架中添加screen-cast。我在web / SO上搜索了很多但是找不到任何相关的资源。欢迎任何帮助或建议。

6 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分:3)

另一种选择是在BrowserStackSauce Labs上远程运行测试 - 这两项服务都提供了测试运行视频录制功能。

答案 2 :(得分:2)

一种方法是在每个步骤后进行屏幕截图,然后将它们组合成视频。 this questions的答案为此任务提供了几个候选库。

另一个想法是使用一些浏览器插件在执行测试时实际进行截屏视频。但我不确定如何开始录制过程。也许可以用硒发送开始/停止记录的捷径,但我不确定这是否有效。 For such plugins I can't offer more than a google search

答案 3 :(得分:2)

您可以查看由Groupon创建和使用的Selenium-Grid-Extras。他们构建了一个能够使用Selenium Grid进行描述的框架。我曾经尝试过一次,似乎工作正常。也许它适合您的需求。

答案 4 :(得分:1)

我将进一步采取 thebobblob的答案。我用 groupon's Selenium-Grid_Extras 重新配置了selenium grid-hub环境,它就像魅力一样。第一次设置节点/集线器时,您需要回答几个问题。在某个时刻运行java -jar Selenium-Grid-Extras-Jar.jar之后,它会询问您要记录的视频数量,默认情况下为20.之后,测试运行所有记录都可通过hub:port访问,如图所示here

更进一步,您可以使用groupon api控制测试中的录音。你有灵活性。有一个开放的issue但它可以让你选择通过休息服务

来操纵它

答案 5 :(得分: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"));