Я использую WebDriver с C#, проблема в том, что WebDriver не может проверить конструкцию, так что я пытаюсь сделать что-то вроде сравнения скриншота, потому что я работаю на большом сайте и каждом день у него новые фьючерсы, новые изменения, поэтому я не знаю, где или на каком дизайне браузера не сломался. Мой вопрос: знаете ли вы какой-либо инструмент, рамки, проект или некоторые идеи?Автоматизированного экран тестирования сравнение
Я уже что-то написал, но это не так идеально, мой код делает скриншоты поверх сайта в разных браузерах и версиях, после чего он режет их и сравнивает с демонстрационным экраном. Если есть более 5% для неправильных пикселей, тест падает.
P.S. Я младший)
Некоторые из моего кода, если кто-то будет нуждаться в будущем:
var screenshot = ((ITakesScreenshot)Global.Driver).GetScreenshot(); screenshot.SaveAsFile(dirHomePage + "homepage.png", ImageFormat.Png); var mainImg = new Bitmap(File.OpenRead(dirHomePage + "homepage.png")); var section = new Rectangle(new Point(0, 0), new Size(mainImg.Width, 153)); this.header = this.CropImage(mainImg, section); this.header = this.ClearImage(this.header, Color.White, 264, mainImg.Width, 30, 60); ImageComparison(this.header, this.demoHeader);
public Bitmap ClearImage(Bitmap source, Color color, int fromW, int toW, int fromH, int toH)
{
Bitmap bmp = source;
for (int i = fromW; i < toW; i++)
{
for (int j = fromH; j < toH; j++)
{
bmp.SetPixel(i, j, color);
}
}
return bmp;
}
public Bitmap CropImage(Bitmap source, Rectangle section)
{
Bitmap bmp = new Bitmap(section.Width, section.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(source, 0, 0, section, GraphicsUnit.Pixel);
return bmp;
}
public void ImageComparison(Bitmap firstImg, Bitmap secondImg)
{
bool match = false;
int nrBadPixels = 0;
if (firstImg.Width.Equals(secondImg.Width) && firstImg.Height.Equals(secondImg.Height))
{
double acceptedProcent = (firstImg.Width * firstImg.Height) * 0.05;
for (int i = 0; i < firstImg.Width; i++)
{
for (int j = 0; j < firstImg.Height; j++)
{
string firstImgRef = firstImg.GetPixel(i, j).ToString();
string secondImgRef = secondImg.GetPixel(i, j).ToString();
if (firstImgRef != secondImgRef)
{
nrBadPixels++;
if (nrBadPixels > acceptedProcent)
{
match = false;
break;
}
match = true;
}
}
}
}
Assert.IsTrue(match);
}
SikuliWebDriver его для java = (мне нужно C# –