gpt4 book ai didi

java - 使用 JAVA 在 selenium 中执行测试的屏幕录制

转载 作者:搜寻专家 更新时间:2023-11-01 03:03:53 26 4
gpt4 key购买 nike

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

谁能帮我解决这个问题,如何在运行自动化套件执行期间记录屏幕。

最佳答案

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

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

录制视频的主要目的是查看自动化测试用例失败时到底发生了什么。因此,准确地说,测试人员需要在测试用例失败前的最后 15 秒进行视频录制。他们不需要为通过的测试用例做任何记录

理论上的解决方案:-

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

Selenium 自动化可以利用 Windows Xbox Game bar 的这个记录功能。在您的 testNG 自动化项目中,在 testNG 监听器的 onTestFailure 方法中,只需将代码添加到按键 Windows+Alt+G 即可捕获最后 15 秒的视频。这将只为失败的测试用例捕获视频,而不会为通过测试用例捕获视频。如果您使用的是 Java,则可以使用 Robot 库以编程方式发送按键。

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

enter image description here

enter image description here

代码解决方案:-

我正在从 testNG listner 的下面调用 recordFailedTCVideo() 方法
public void onTestFailure(ITestResult result) 方法。这只会为失败的测试用例录制最后 15 秒的视频。[而不是通过测试用例]

视频说明:- https://www.youtube.com/watch?v=p6tJ1fVaRxw

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();
}
//}
}

进一步的视频解释:- https://www.youtube.com/watch?v=p6tJ1fVaRxw

约束:-

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

关于java - 使用 JAVA 在 selenium 中执行测试的屏幕录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com