Я создал приложение, используя Selenium. Приложение открывает Chrome и переходит на 3 разных веб-сайта и делает снимок экрана. Все отлично работает. но как только добавляется безголовый аргумент, так что chrome будет запускаться в фоновом режиме, приложение продолжит работу и сохранит первое изображение, но затем, когда оно перейдет на второй веб-сайт, оно выдает системе исключение «недостаточно памяти» в этой строке code ("using (var clone = screenshot.Clone (croppedImage, screenshot.PixelFormat))").
Если бы кто-то мог указать мне, что я должен делать / читать, чтобы решить эту проблему, я был бы очень признателен.
public void TakeScreenshot(IWebDriver driver, IWebElement element, string filename)
{
// Scroll to the element if necessary
var actions = new Actions(driver);
actions.MoveToElement(element);
actions.Perform();
// Get the element position (scroll-aware)
var locationWhenScrolled = ((RemoteWebElement)element).LocationOnScreenOnceScrolledIntoView;
var fileName = filename + ".png";
var byteArray = ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
Class_Timer.MyTimer();
using (var screenshot = new System.Drawing.Bitmap(new System.IO.MemoryStream(byteArray)))
{
var location = locationWhenScrolled;
// Fix location if necessary to avoid OutOfMemory Exception
if (location.X + element.Size.Width > screenshot.Width)
{
location.X = screenshot.Width - element.Size.Width;
}
if (location.Y + element.Size.Height > screenshot.Height)
{
location.Y = screenshot.Height - element.Size.Height;
}
Class_Timer.MyTimer();
// Crop the screenshot
var croppedImage = new System.Drawing.Rectangle(location.X, location.Y, element.Size.Width, element.Size.Height);
using (var clone = screenshot.Clone(croppedImage, screenshot.PixelFormat))
{
clone.Save(fileName, ImageFormat.Png);
Class_Timer.MyTimer();
clone.Dispose();
}
screenshot.Dispose();
}
}