2013-05-16 3 views
0

Я использую 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); 
    } 

ответ

1

Я думаю, что вы можете дать Sikuli попробовать.

Sikuli Script автоматизирует все, что вы видите на экране. Он использует изображение для распознавания и управления компонентами графического интерфейса. Это полезно, когда нет простого доступа к внутреннему или исходному коду GUI.

Однако, это просто для макета и прочее, если вам нужно протестировать функциональность на основе DOM, Selenium WebDriver по-прежнему остается лучшим способом. Более того, это больше похоже на Selenium IDE, а не на Selenium WebDriver C#. Вы можете найти эту страницу вики интересной, SikuliWebDriver.

+0

SikuliWebDriver его для java = (мне нужно C# –

Смежные вопросы