Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JAVA在selenium中对测试执行的屏幕记录_Java_Selenium_Testng - Fatal编程技术网

使用JAVA在selenium中对测试执行的屏幕记录

使用JAVA在selenium中对测试执行的屏幕记录,java,selenium,testng,Java,Selenium,Testng,我已经使用JavaSelenium创建了一个自动化程序。 我想记录在脚本执行期间执行的屏幕(视频),以便更好地跟踪失败/通过的场景并查看执行过程 任何人都可以帮助我,如何在运行automation suite执行期间记录屏幕。请参阅此API(Monte库): 此链接: 示例代码(来自以上链接): 前面提到的解决方案问题:- 所有解决方案都应记录视频,从头到尾记录测试执行情况。如果自动化套件运行数小时,那么这将不是一个实用的最佳解决方案 录制视频的主要目的是查看自动化测试用例失败时到底发生了什么。

我已经使用JavaSelenium创建了一个自动化程序。 我想记录在脚本执行期间执行的屏幕(视频),以便更好地跟踪失败/通过的场景并查看执行过程

任何人都可以帮助我,如何在运行automation suite执行期间记录屏幕。

请参阅此API(Monte库):

此链接:

示例代码(来自以上链接):


前面提到的解决方案问题:-

所有解决方案都应记录视频,从头到尾记录测试执行情况。如果自动化套件运行数小时,那么这将不是一个实用的最佳解决方案

录制视频的主要目的是查看自动化测试用例失败时到底发生了什么。所以,测试人员需要在测试用例失败之前的最后15秒的视频记录。通过测试的案例不需要任何记录

理论上的解决方案:-

在Windows 10以后的版本中,Windows Xbox游戏栏[Windows+G]能够捕获最后15秒[可自定义]的视频。键盘快捷键Windows+Alt+G用于使用XBox游戏条捕获最后15秒的视频,它将存储在“设置”中提到的文件夹中

Selenium automation可以利用Windows Xbox游戏条的此录制功能。 在您的testNG自动化项目中,在testNG listener的onTestFailure方法中,只需向按键Windows+Alt+G添加代码即可捕获最后15秒的视频。这将只捕获失败测试用例的视频,而不会捕获通过测试用例的视频。如果您使用的是Java,那么您可以使用Robot库以编程方式发送按键

显示Windows XBox游戏条及其设置为捕获最后15秒的屏幕截图

代码中的解决方案:-

我在下面调用testNG listner的recordFailedTCVideo()方法
public void onTestFailure(ITestResult结果)方法。 这将只记录失败测试用例的最后15秒视频。[而不记录通过测试用例]

视频说明:-

进一步视频说明:-

约束条件:-

此解决方案不适用于非Windows平台。
XBar Game utility不会录制Windows资源管理器、文本文件等,尽管它可以毫无问题地录制浏览器。

确实要视频吗?对于失败的测试来说似乎有点沉重。您可以按照此处的详细说明拍摄屏幕截图:
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();
}
public void stopRecording() throws Exception
{
this.screenRecorder.stop();
}
public void recordFailedTCVideo(ITestResult result) {
    //private void pressKey() {
    System.out.println("In recordFailedTCVideo::***In Try Block *** Video for test case failed " + result.getName());
    commonUtility.logger.error("BaseTest::recordFailedTCVideo::***In Try Block ***  Video for test case failed " + result.getName());
    
        try {
            // Useing Robot class to keypres Win+Alt+G which will capture last 15 seconds of video
            Robot r = new Robot();
            r.keyPress(KeyEvent.VK_WINDOWS );
            Thread.sleep(1000);
            r.keyPress(KeyEvent.VK_ALT );
            Thread.sleep(1000);
            r.keyPress(KeyEvent.VK_G );
            Thread.sleep(5000);
            
            r.keyRelease(KeyEvent.VK_WINDOWS);
            Thread.sleep(1000);
            r.keyRelease(KeyEvent.VK_ALT);
            Thread.sleep(1000);
            r.keyRelease(KeyEvent.VK_G);
            Thread.sleep(5000);
          
            /// Copy Video saved to desired location
            
            File srcDir = new File(commonUtility.prop.getProperty("VIDEO_CAPTURE_DEFAULT_LOCATION"));

            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd HHmmss");  
            LocalDateTime now = LocalDateTime.now();  
          
            String destination = ".\\ScreenshotsAndVideos\\" + dtf.format(now) ;
            File destDir = new File(destination);

            try {
                System.out.println("In RecordFailedTCVideo::Source Folder is "+ srcDir +" Destination Folder = " + destDir);
                commonUtility.logger.error("In RecordFailedTCVideo::Source Folder is "+ srcDir +" Destination Folder = " + destDir);

                FileUtils.moveDirectory(srcDir, destDir);
                
            } catch (IOException e) {
                e.printStackTrace();
            }
                    
        } catch (Exception e) {
            System.out.println("In recordFailedTCVideo::***In Catch Block ***\n" +e);
            commonUtility.logger.error("BaseTest::recordFailedTCVideo::***In Catch Block *** \n"+e );
            
            e.printStackTrace();
        }
    //}
}