有没有什么好的例子可以说明如何在selenium网络驱动程序C#中截屏,然后裁剪并保存图像

本文关键字:驱动程序 然后 图像 保存 裁剪 网络 selenium 什么 说明 有没有 | 更新日期: 2023-09-27 18:20:37

我一直在寻找一些很好的例子,说明如何在C#中的Selenium Webdriver中使用ITakesScreenshot进行屏幕截图,然后使用元素维度裁剪图像,然后保存这个新图像。我在C#中找不到这样的运气。

我现在有这个方法,但在测试中使用时,偶尔会出现内存不足异常。它在试图收割的地方失败了。

public void TakeScreenShotOfElement(IWebDriver _driver, string rootpath, string imgName, string element2)
    {
            string element3 = element2;
            var element = driver.FindElement(By.XPath(element3));
            Byte[] ba = ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
            var ss = new Bitmap(new MemoryStream(ba));
            var crop = new Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);
            //create a new image by cropping the original screenshot
            Bitmap image2 = ss.Clone(crop, ss.PixelFormat);

            if (!Directory.Exists(rootpath))
            {
                Directory.CreateDirectory(rootpath);
            }
            image2.Save(String.Format("{0}''{1}.png", rootpath, imgName), System.Drawing.Imaging.ImageFormat.Png);
    }

非常感谢任何帮助,提前感谢!!!

有没有什么好的例子可以说明如何在selenium网络驱动程序C#中截屏,然后裁剪并保存图像

您正在创建的一些对象是IDisposable。您需要确保Dispose()被调用。目前,他们并没有释放他们声称的内存,这就是为什么你会得到例外。

确保这些项目得到处理的最简单方法是将它们中的每一个封装在using块中。