【问题标题】:Getting an Error as 'The given path's format is not supported'出现“不支持给定路径的格式”的错误
【发布时间】:2016-09-01 11:39:12
【问题描述】:
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:不支持给定路径的格式。”

文件路径有什么问题?

【问题讨论】:

  • 你能分享一下图片文件名是什么样的吗?
  • 文件不存在。我试图在运行时保存文件。我刚刚发现了这个问题,它是在附加 DateTime.Now 后形成的文件名,它不是受支持的文件名。谢谢

标签: c# selenium


【解决方案1】:

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);

【讨论】:

  • 谢谢,这解决了我的问题。我创建了一个唯一的字符串来追加一个唯一的文件名,而不是使用 DateTime.Now。
【解决方案2】:
screenshot.SaveAsFile(@"D:\SeleniumTutorials\ScreenShotAT" + DateTime.Now.ToString("dd-MMM-yyyy") + ".png", System.Drawing.Imaging.ImageFormat.Png);

这将保存文件如下:

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

【讨论】:

    【解决方案3】:

    你应该这样做:

    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();
    }
    

    【讨论】:

      【解决方案4】:

      您正在将 DateTime 添加到字符串中。

      试试:

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

      【讨论】:

        猜你喜欢
        • 2017-06-26
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 2012-04-21
        • 1970-01-01
        相关资源
        最近更新 更多