Lorsque je teste avec WatiN, j'aime sauvegarder les captures d'écran. Parfois, je n'ai pas vraiment besoin d'une image de toute la fenêtre du navigateur - je veux juste une image de l'élément que je suis en train de tester.WatiN NativeElement.GetElementBounds() - Quelle est l'unité de mesure?
Ma tentative pour enregistrer une image d'un élément avec le code ci-dessous a abouti à une image d'une boîte de bloc, car elementBounds.Top pointe vers une position de pixel au-delà du bas de l'écran. Les valeurs elementBounds.Width et .Height semblent également représenter environ la moitié de ce qu'elles devraient être.
Est-ce un bogue WatiN, ou ces propriétés dans une unité de mesure différente que je dois convertir en pixels d'une manière ou d'une autre?
public static void SaveElementScreenshot
(WatiN.Core.IE ie, WatiN.Core.Element element, string screenshotPath)
{
ScrollIntoView(ie, element);
ie.BringToFront();
var ieClass = (InternetExplorerClass) ie.InternetExplorer;
Rectangle elementBounds = element.NativeElement.GetElementBounds();
int left = ieClass.Left + elementBounds.Left;
int top = ieClass.Top + elementBounds.Top;
int width = elementBounds.Width;
int height = elementBounds.Height;
using (var bitmap = new Bitmap(width, height))
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.CopyFromScreen
(new Point(left, top), Point.Empty, new Size(width, height));
}
bitmap.Save(screenshotPath, ImageFormat.Jpeg);
}
}
Qu'est-ce que 'ScrollIntoView'? Je ne peux pas le trouver .. – Marco
Marco, cet article de blog contient tout le code pour cette classe: http://geekswithblogs.net/brians/archive/2010/05/31/watin-screenshot-saver.aspx –