On VS Code, I would like to set up UI tests on the app's visual by taking the app's screenshot elements. However, when the element for example "button" is not visible on the page you need to scroll down to see it, when creating a screenshot, a "system out of memory" error is displayed.
This is an code extract in c#.
public void TakeScreenshotOfElementCheckbox()
{
string fileName = @"C:\Users\...\testing\Screenshots\checkbox.png";
var screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
var bmpScreen = new Bitmap(new MemoryStream(screenshot.AsByteArray));
IWebElement element = driver.FindElement(By.XPath(".//*[@class='footer-convenant']"));
var cropArea = new Rectangle(element.Location, element.Size);
var bitmap = bmpScreen.Clone(cropArea, bmpScreen.PixelFormat);
bitmap.Save(fileName);
}
More details about Dispose :
I'm trying but I think I'm using the wrong way. using should be used how? Can I have an example?
string fileName = @"C:\Users\...\testing\Screenshots\Checkbox\checkbox.png";
using (var image = new Bitmap(fileName))
{
var screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
//Bitmap bmpScreen = new Bitmap(new MemoryStream(screenshot.AsByteArray));
// 2. Get screenshot of specific element
element = driver.FindElement(By.XPath(".//*[@class='Checkbox']"));
Rectangle rect = new Rectangle(element.Location, element.Size);
var bitmap = image.Clone(rect, image.PixelFormat);
bitmap.Save(fileName);
}
I'm trying but I think I'm not far away. Can you show me a structure of what it could be?
string fileName = @"C:\Users\...\testing\Screenshots\Checkbox\checkbox.png";
using (var image = new Bitmap(fileName))
{
// 1. Make screenshot of all screen
var screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
Bitmap bmpScreen = new Bitmap(new MemoryStream(screenshot.AsByteArray));
// 2. Get screenshot of specific element
element = driver.FindElement(By.XPath(".//*[@class='Checkbox']"));
Rectangle rect = new Rectangle(element.Location, element.Size);
using (var bitmap = image.Clone(rect, image.PixelFormat))
{
bitmap.Save(fileName);
}
}
Or
string fileName = @"C:\Users\..\testing\Screenshots\Checkbox\checkbox.png";
using (var image = new Bitmap(fileName))
{
// 1. Make screenshot of all screen
var screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
Bitmap bmpScreen = new Bitmap(new MemoryStream(screenshot.AsByteArray));
// 2. Get screenshot of specific element
element = driver.FindElement(By.XPath(".//*[@class='Checkbox']"));
Rectangle rect = new Rectangle(element.Location, element.Size);
var bitmap = bmpScreen.Clone(rect, bmpScreen.PixelFormat);
bitmap.Save(fileName);
bitmap.Dispose();
}