12

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

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

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

4

6 回答 6

4

您可以使用 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();
    }
于 2015-12-01T10:46:11.180 回答
3

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

于 2015-11-24T15:02:46.327 回答
2

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

另一个想法是在执行测试时使用一些浏览器插件实际进行截屏。但我不确定如何开始录制过程。可以使用 selenium 发送开始/停止录制的快捷方式,但我不确定这是否可行。对于这样的插件,我只能提供谷歌搜索

于 2015-11-24T10:54:07.917 回答
2

您可以查看由 Groupon 创建和使用的Selenium-Grid-Extras 。他们已经构建了一个框架,该框架能够使用 Selenium Grid 完成您所描述的工作。我自己尝试过一次,似乎工作正常。也许它会满足您的需求。

于 2015-11-25T15:55:11.300 回答
1

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

更进一步,您可以使用 groupon api 控制测试的记录。你有灵活性。有一个未解决的问题,但它使您可以选择通过休息服务来操纵它

于 2015-12-01T05:11:18.203 回答
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"));
于 2015-12-01T09:03:39.357 回答