我试图找出selenium屏幕截图类中SaveAsFile方法的正确用法,在我看来,我们传递文件名的两个方法以及文件格式(filename.png)或(filename.jpeg,ScreenshotImageFormat.Jpeg)都可以获得屏幕快照。
我们什么时候需要使用SaveAsFile(filename.jpeg,ScreenshotImageFormat.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);发布于 2021-05-19 12:44:59
区别在于,默认情况下,没有第二个参数的SaveAsFile方法使用ScreenshotImageFormat.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)
{selenium使用的Image.Save逻辑是文档化的这里。Microsoft docs声明了以下行为:
如果图像的文件格式不存在编码器,则使用便携式网络图形(PNG)编码器。当使用Save方法将图形图像保存为Windows元文件格式(WMF)或增强型元文件格式(EMF)时,生成的文件将保存为便携式网络图形(PNG)文件。之所以出现此行为,是因为.NET框架的.NET组件没有可用于将文件保存为.wmf或.emf文件的编码器。
https://stackoverflow.com/questions/67603423
复制相似问题