如何创建文件夹并在其中保存屏幕截图

Posted

技术标签:

【中文标题】如何创建文件夹并在其中保存屏幕截图【英文标题】:How to create a folder and save screenshots therein 【发布时间】:2018-03-02 22:56:14 【问题描述】:

请帮助我。我想创建新文件夹并在其中保存 selenium 的屏幕截图。

我希望,当我单击按钮 xxx_1 时,将自动创建文件夹,其中包含我在 txt_Box1 中输入的文本和当前日期。 文件夹应该是这样的:

Test_test2_18_test3-test4_test5_test_11-Jul-2017

这是我的代码

private void xxx_1(object sender, EventArgs e)

    string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
           + "C:/xxx/xxx" + "_" + textBox1 + "_" + "xxx_xxx_xx_" + DateTime.Now;

    if (!Directory.Exists(path))
    
        Directory.CreateDirectory(path);
    

    //string path = @"C:\\xxx\xxx" + "_" + textBox1 + "_" + "xxx_xxx_xxx_" + DateTime.Now; 

    String xxx= "https://xxx.xxx.xxx";

    IWebDriver driver_xx = new ChromeDriver();
    driver_xx.Navigate().GoToUrl(xxx);
    driver_xx.FindElement(By.Id("xxx")).SendKeys("xxx");
    driver_xx.FindElement(By.Id("xx")).SendKeys("xxx");
    driver_xx.FindElement(By.Id("xx")).Click();
    Thread.Sleep(3000);

    Screenshot ss_xx = ((ITakesScreenshot)driver_xx).GetScreenshot();
    ss_xx.SaveAsFile("How to save the screenshots in new created folder??", OpenQA.Selenium.ScreenshotImageFormat.Jpeg);

【问题讨论】:

如果你调试,path 的值是多少?保存文件不是ss_xx.SaveAsFile(Path.Combine(path, filename), OpenQA.Selenium.ScreenshotImageFormat.Jpeg);之类的吗? 如果我使用此代码字符串路径 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\xxx"; Directory.CreateDirectory(路径);截图 ss_xxx = ((ITakesScreenshot)driver_xxx).GetScreenshot(); ss_xxx.SaveAsFile(Path.Combine(path,"xxx_environment_version.Jpeg"), OpenQA.Selenium.ScreenshotImageFormat.Jpeg); driver_xxx.Close();文件夹在 appdata/roaming 中创建,但我希望该文件夹应该在 C:\\ 或桌面上创建,带有文本 //string path = @"C:\\xxx\xxx" + "" + textBox1 + " " + "xxx_xxx_xxx_" + DateTime.Now; 我很困惑,你想要它在桌面上但获取应用程序数据文件夹,为什么不直接获取桌面文件夹!? 是的,你说得对,但我怎样才能创建这个具有特定名称的文件夹?字符串路径 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "xx/xx" + "" + textBox1 + "" + "xx_xxx_xxx_" + DateTime.Now; Directory.CreateDirectory(路径);当我尝试上面的代码时,出现错误:System.NotSupportedException: 'The given path's format is not supported.' If a folder does not exist, create it的可能重复 【参考方案1】:

您不能像这样在path 中使用DateTime,因为DateTime 上的.ToString() 的默认实现将包含无效字符。使用格式说明符:

 string path = Path.Combine(
                   Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                   "xx\\xx",
                   textBox1.Text,
                   "xx_xxx_xxx_",
                   DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss") // This will show '21-09-2017 16-11-15'
               ); 

Directory.CreateDirectory(path); 

请注意,如果textBox1.Text 包含无效的路径字符,例如< > :,那么您将遇到另一个异常。

【讨论】:

以上是关于如何创建文件夹并在其中保存屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vb.net 2010 的我的文档/屏幕截图中保存 jpg 文件

创建文件并在其中保存对象

如何创建对角线切割视图以在配置文件屏幕中使用?

保存屏幕截图并在 Facebook 上分享

始终将屏幕截图保存在“照片”中相同的自定义名称应用相册中

无法从存储在照片库中的屏幕截图 png 文件中获取创建日期