C# 拍摄屏幕截图时,Selenium Screenshot类中的SaveAsFile(fileName,Imageformat)方法有什么用途?

C# 拍摄屏幕截图时,Selenium Screenshot类中的SaveAsFile(fileName,Imageformat)方法有什么用途?,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我试图找出selenium screenshot类中SaveAsFile方法的正确用法,在我看来,我们传递文件名和文件格式(filename.png)或(filename.jpeg,ScreenshotImageFormat.jpeg)来获取屏幕截图的方法都是正确的 什么时候需要使用SaveAsFile(filename.jpeg,screenshotmageformat.jpeg)方法?截图时它会做什么 Screenshot ss = ((ITakesScreenshot) driver).G

我试图找出selenium screenshot类中
SaveAsFile
方法的正确用法,在我看来,我们传递文件名和文件格式(filename.png)或(filename.jpeg,ScreenshotImageFormat.jpeg)来获取屏幕截图的方法都是正确的

什么时候需要使用
SaveAsFile(filename.jpeg,screenshotmageformat.jpeg)
方法?截图时它会做什么

Screenshot ss = ((ITakesScreenshot) driver).GetScreenshot();
ss.SaveAsFile(@"E:\C#\MyFirstProject\MyFirstProject\Screenshot\Mytest.png");
ss.SaveAsFile(@"E:\C#\MyFirstProject\MyFirstProject\Screenshot\nataraj2.Jpeg", ScreenshotImageFormat.Png);

区别在于没有第二个参数的
SaveAsFile
方法默认使用
screenshotmageformat.Png
。另一个带有两个参数的
SaveAsFile
允许您指定更广泛的选项集

因此,如果要手动指定文件类型,应使用
SaveAsFile(fileName,format)
方法

代码段源代码:

/// <summary>
/// Saves the screenshot to a Portable Network Graphics (PNG) file, overwriting the
/// file if it already exists.
/// </summary>
/// <param name="fileName">The full path and file name to save the screenshot to.</param>
public override void SaveAsFile(string fileName)
{
    this.SaveAsFile(fileName, ScreenshotImageFormat.Png);
}

/// <summary>
/// Saves the screenshot to a file, overwriting the file if it already exists.
/// </summary>
/// <param name="fileName">The full path and file name to save the screenshot to.</param>
/// <param name="format">A <see cref="ScreenshotImageFormat"/> value indicating the format
/// to save the image to.</param>
public void SaveAsFile(string fileName, ScreenshotImageFormat format)
{
//
///将屏幕截图保存到便携式网络图形(PNG)文件,覆盖
///文件(如果已存在)。
/// 
///保存屏幕截图的完整路径和文件名。
public override void SaveAsFile(字符串文件名)
{
这个.SaveAsFile(文件名,ScreenshotImageFormat.Png);
}
/// 
///将屏幕截图保存到文件中,如果文件已存在,则覆盖该文件。
/// 
///保存屏幕截图的完整路径和文件名。
///指示格式的值
///将图像保存到。
public void SaveAsFile(字符串文件名,屏幕快照图像格式)
{
资料来源:

selenium使用的
Image.Save
逻辑已记录在案。Microsoft文档说明了以下行为:

如果图像的文件格式不存在编码器,则使用便携式网络图形(PNG)编码器。当使用保存方法将图形图像保存为Windows图元文件格式(WMF)或增强图元文件格式(EMF)文件时,生成的文件将另存为便携式网络图形(PNG)出现这种行为是因为.NET Framework的GDI+组件没有可用于将文件另存为.wmf或.emf文件的编码器


如果我错了,请纠正我,行为没有区别,因为我们给文件名提供的两种方法都有扩展名。@MaartenDevcorrect,相同的行为,唯一的区别是
SaveAsFile(文件名)
默认使用
ScreenshotImageFormat.Png
格式。因此,如果将其写入Jpeg文件,则应使用
SaveAsFile(文件名,ScreenshotImageFormat.Jpeg)
Selenium使用以下方法将图像写入文件:谢谢,@MaartenDev.SaveAsFile(文件名)默认格式是.Png,但即使我们提供任何其他格式,如.Jpeg或.wmf,也可以使用。
ss.SaveAsFile(@“E:\C\MyFirstProject\MyFirstProject\Screenshot\Mytest2.wmf”);
不错,这也在microsoft端有文档记录,我更新了答案