<分区> 分区>
在 VS Code 上,我想通过获取应用程序的屏幕截图元素在应用程序的视觉对象上设置 UI 测试。但是,当“按钮”等元素在页面上不可见时,您需要向下滚动才能看到它,在创建屏幕截图时,会显示“系统内存不足”错误。
这是 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);
}
关于 Dispose 的更多细节:
我正在尝试,但我认为我使用了错误的方法。 using应该怎么用?我可以举个例子吗?
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);
}
我正在尝试,但我认为我离它不远了。你能告诉我它可能是什么的结构吗?
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);
}
}
或者
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();
}
