有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

selenium如何使用Java对自动测试进行屏幕广播?

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

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

基本上,我想将屏幕转换添加到我的框架中。我在网上搜索了很多,但没有找到任何相关的资源。欢迎任何帮助或建议


共 (6) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

    你可以查看由Groupon创建和使用的Selenium-Grid-Extras。他们已经构建了一个框架,能够使用Selenium网格实现您所描述的功能。我自己试过一次,似乎效果很好。也许它能满足你的需求

  3. # 3 楼答案

    我会让博博布洛的回答更进一步。我最近用groupon's Selenium-Grid_Extras配置了selenium grid hub环境,效果很好。在第一次设置节点/集线器时,您需要回答的问题很少。在运行java -jar Selenium-Grid-Extras-Jar.jar之后,它会询问您想要录制的视频数量,默认为20。在测试运行之后,所有记录都可以通过hub:port访问,如图here

    更进一步说,您可以使用groupon api控制测试记录。你有灵活性。有一个开放的issue,但它也让您可以通过rest服务来操作它

  4. # 4 楼答案

    另一种选择是在BrowserStackSauce Labs上远程运行测试——这两种服务都有测试运行视频记录

  5. # 5 楼答案

    当需要时,可以使用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"));
    
  6. # 6 楼答案

    您可以使用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();
        }