首页 > 解决方案 > Extent 报告 Selenium WebDriver 屏幕截图加载问题 c#

问题描述

我正在使用下面的代码将屏幕截图保存到与我的报告 HTML 文件相同的文件夹 (d:\DevTeam\LSPTestSuites) 中。

ScreenshotFilePath = $"{Reporter.LatestResultsReportFolder}\\{screenshotName}.jpg";
ScreenshotFilePath = ScreenshotFilePath.Replace('/', ' ').Replace('"', ' ');
ss.SaveAsFile(ScreenshotFilePath, ScreenshotImageFormat.Png);

但是如果我将文件夹复制到另一个位置,则不会加载屏幕截图。

report.html文件中保存的完整截图文件路径如下:

<td class='step-details'>Launch Introductory Video.<img data-featherlight='d:\DevTeam\LSPTestSuites\20181128_1135\PASSED_STEP_TCID31906a_Launch Introductory Video..jpg' class='step-img' src='d:\DevTeam\LSPTestSuites\20181128_1135\PASSED_STEP_TCID31906a_Launch Introductory Video..jpg' data-src='d:\DevTeam\LSPTestSuites\20181128_1135\PASSED_STEP_TCID31906a_Launch Introductory Video..jpg'></td>

标签: c#screenshotrelative-pathselenium-extent-report

解决方案


在当前项目目录中拥有“屏幕截图”文件夹(位于根位置)后,您可以通过以下方式获取它:

    //Set Current Project directory
    public static String dir = AppDomain.CurrentDomain.BaseDirectory;
    public static FileInfo fileInfo = new FileInfo(dir);
    public static DirectoryInfo currentDir = fileInfo.Directory.Parent.Parent;
    public static string parentDirName = currentDir.FullName;

    //Save screenshot
    Screenshot file = ((ITakesScreenshot)driver).GetScreenshot();
    file.SaveAsFile(parentDirName + "\\Screenshots\\" + "Tempname.png", ScreenshotImageFormat.Png);

    //To load it for Selenium Extent Report
    testlog.Info("Details with screenshot" ,  MediaEntityBuilder.CreateScreenCaptureFromPath(parentDirName + "\\Screenshots\\" + "Tempname.png").Build());

推荐阅读