0

我正在使用下面的代码将屏幕截图保存到与我的报告 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>
4

2 回答 2

1

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

    //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());
于 2018-11-29T05:36:27.817 回答
1

首先,我将屏幕截图保存到报告目录(c://temp/LSPTestSuites/screenshots)内的屏幕截图文件夹中,然后,我从屏幕截图文件路径中删除了报告目录路径,然后使用它将其添加到报告中。

ScreenshotFilePath = $"{Reporter.LatestResultsReportFolder}\\screenshots\\{screenshotName}.jpg";
ScreenshotFilePath = ScreenshotFilePath.Replace('/', ' ').Replace('"', ' ');
ss.SaveAsFile(ScreenshotFilePath, ScreenshotImageFormat.Png);
//to save relative screenshots in Reports html file - start
if(ScreenshotFilePath.IndexOf("screenshots") != -1)
{
       ScreenshotFilePath = ScreenshotFilePath.Substring(ScreenshotFilePath.IndexOf("screenshots"));
}
//to save relative screenshots in Reports html file - end
Logger.Trace($"ScreenshotFilePath => {ScreenshotFilePath}");

关键是在将屏幕截图添加到范围报告时使用相对路径(screenshots/screenshot.png):

CurrentTestCase.AddScreenCaptureFromPath(screenshotPath);

现在,我可以将报告文件夹移动到任何机器的任何位置,并且可以毫无问题地加载/显示屏幕截图。

于 2018-12-27T13:34:12.013 回答