【问题标题】:Save Screenshot to folder in root directory VSTS将屏幕截图保存到根目录 VSTS 的文件夹中
【发布时间】:2016-12-23 07:13:12
【问题描述】:

我有一个简单的函数,可以在运行 Xunit 测试时截取屏幕截图。 测试很简单。

 ITakesScreenshot screenshotHandler = PropertiesCollection.driver as ITakesScreenshot;
            Screenshot screenshot = screenshotHandler.GetScreenshot();
            screenshot.SaveAsFile(@"C:\Users\Slim\Screenshots\" + filename + ".png", ImageFormat.Png);

它可以工作,但是我们使用的是 VSTS,当其他人使用测试时,它会中断,因为路径不再有效。 C:\Users\Slim\Screenshots\ 可以将代码的路径更改为您在本地拥有文件的路径,但这当然不是好的做法:)

我曾尝试使用 AppDomain.CurrentDomain.BaseDirectory 但没有成功。

ITakesScreenshot screenshotHandler = PropertiesCollection.driver as ITakesScreenshot;
            Screenshot screenshot = screenshotHandler.GetScreenshot();
            screenshot.SaveAsFile(AppDomain.CurrentDomain.BaseDirectory + //Screenshots//" + filename + ".png", ImageFormat.Png);

有什么好的建议吗?

【问题讨论】:

    标签: c# visual-studio azure-pipelines


    【解决方案1】:

    您可以查看SpecialFolders enumeration

    它处理对程序数据、程序文件、应用程序数据等路径的访问。如果您使用特定于用户的文件夹,例如 LocalApplicationData 或 RoamingApplicationData,用户帐户将得到正确处理,它们分别映射到 @ 987654322@和C:\users\MyUser\AppData\Local\Roaming

    另一方面,您有例如 CommonApplicationData,它通常映射到 C:\ProgramData,这对所有用户都是通用的。

    因此,总而言之,您可以执行以下操作:

    string myFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
    screenshot.SaveAsFile(Path.Combine(myFolder, filename + ".png"), ImageFormat.Png);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      相关资源
      最近更新 更多