Ich verwende den ImageComparer in meinem mobilen Testprojekt und kann ein Basisbild mit einem aktuellen Screenshot vergleichen, aber das Problem tritt dort auf, wo sich ein Teil des Screenshots ständig ändert und ich diesen Teil ausschließen möchte aus dem Vergleich. Hier ist mein Code:Verwenden von ImageComparer, wie kann ich einen mittleren Abschnitt eines ToleranceRectangle von einem Vergleich ausschließen?
private bool RunVisualCheck(string screen, string resultsPath, string baseline = "baseline.jpeg", string screenshot = "screenshot.jpeg")
{
GetScreenshot(resultsPath + screenshot);
var baselineImage = Image.FromFile(resultsPath + baseline);
var actualImage = Image.FromFile(resultsPath + screenshot);
Image diffImage;
int ignoreTop = 64;
var compareArea = new List<ToleranceRectangle>
{
new ToleranceRectangle()
{
Rectangle = new Rectangle(0,ignoreTop,baselineImage.Width, baselineImage.Height - ignoreTop),
Difference = new ColorDifference()
}
};
bool goodCompare = ImageComparer.Compare(actualImage, baselineImage, compareArea, out diffImage);
if (!goodCompare)
{
diffImage.Save(resultsPath + "diffImage.jpeg");
}
return goodCompare;
}
private void GetScreenshot(string pathFile)
{
System.Threading.Thread.Sleep(2000); // Temp fix to wait until page loads
var srcFiler = ((ITakesScreenshot)mobileDriver).GetScreenshot();
srcFiler.SaveAsFile(pathFile, ImageFormat.Jpeg);
}
Hier ist ein Beispiel (nicht die App getestet wird), wo Ich mag würde den Bereich innerhalb des roten Rechtecks aus dem Gesamt Screenshot ausschließen verglichen werden.
Gibt es eine einfache Möglichkeit, dies zu tun?
ich mit dem Hinzufügen von einzelnen Abschnitten in der Liste bin experimentieren, aber dies erfordert mich Rechtecke für die Spitze an, die Seiten und unter dem Bereich, den ich ausschließen möchten. Wäre schön, stattdessen nur ein Rechteck zum Ausschließen zu haben. –
RKelley