获取错误'不支持给定路径的格式'

时间:2016-09-01 11:39:13

标签: c# selenium

public void takeScreenshot()
    {
        ITakesScreenshot screenshotHandler = driver as  ITakesScreenshot;
        Screenshot screenshot = screenshotHandler.GetScreenshot();
        screenshot.SaveAsFile(@"D:\SeleniumTutorials\ScreenShotAT" + DateTime.Now + ".png", System.Drawing.Imaging.ImageFormat.Png);
        screenshot.ToString();
    }

当我调用上面的方法来获取selenium中的屏幕截图时,我收到错误为'消息:NotSupportedExcetpion:不支持给定路径的格式。'

文件的路径有什么问题。?

4 个答案:

答案 0 :(得分:2)

DateTime.Now可能会返回对Windows中的路径无效的字符。例如,您可以DateTime.Now

获得9/1/2016 11:41:19 AM结果

在这里你有禁止的字符:

  • <,> (小于,大于)
  • :(冒号)
  • “(双引号)
  • /(正斜线)
  • \(反斜杠)
  • | (竖杆或竖管)
  • ? (问号)
  • *(星号)

要实现您的目标,您必须为DateTime提供路径友好格式。示例如下:

string friendlyDatetime = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now);
screenshot.SaveAsFile(@"D:\SeleniumTutorials\ScreenShotAT" + friendlyDatetime + ".png", System.Drawing.Imaging.ImageFormat.Png);

答案 1 :(得分:0)

screenshot.SaveAsFile(@"D:\SeleniumTutorials\ScreenShotAT" + DateTime.Now.ToString("dd-MMM-yyyy") + ".png", System.Drawing.Imaging.ImageFormat.Png);

这将保存文件,如下所示:

  

d:\ SeleniumTutorials \ ScreenShotAT01-SEP-2016.png

答案 2 :(得分:0)

你应该这样做:

public void takeScreenshot()
{
  string path = string.Format(@"c:\SeleniumTutorials\ScreenShotAT{0:d_M_yyyy_HH_mm_ss}.txt", DateTime.Now);
  ITakesScreenshot screenshotHandler = driver as  ITakesScreenshot;
  Screenshot screenshot = screenshotHandler.GetScreenshot();     
  screenshot.SaveAsFile(path, System.Drawing.Imaging.ImageFormat.Png);
  screenshot.ToString();
}

答案 3 :(得分:-1)

您正在为字符串添加DateTime。

尝试:

screenshot.SaveAsFile(@"D:\SeleniumTutorials\ScreenShotAT" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".png", System.Drawing.Imaging.ImageFormat.Png);