2016-04-12 23 views
2

Salatalık kullanarak paralel olarak bir dizi test çalıştırıyorum ve hepsini tek bir HTML raporunda bir araya getiriyorum. Başarısız testlerde tarayıcımdan bir ekran görüntüsü alınmış ve raporda bir png olarak gömülmüştür. Çok fazla başarısızlığa sahip test çalışmaları için rapor 50 MB'a kadar büyüyebilir ve raporun yüklenmesi için sonsuza kadar sürer.Selenyum ile alınan ekran görüntüsünün kalitesini veya boyutlarını nasıl azaltabilirim?

Bir ekran görüntüsü almanın, boyutunun küçültülmesinin ve daha sonra yalnızca dosyanın boyutunu küçültmek için raporun içine gömmenin bir yolu var mı? Resimlerin gömülü olması gerektiğini ve rapora ayrı dosyalar olarak saklanamayacağını varsayalım.

+0

/install Eğer kullanabileceğiniz araçlar üzerine herhangi bir kısıtlama var mı: Bu örnek orijinal boyutunun% 80'ine her bir ekran görüntüsünü yeniden boyutlandırmak için "chunky_png" kütüphane kullanımı? –

+0

tarayıcının pencere boyutunu yeniden boyutlandırmaya çalıştınız, böylece ekran görüntüsü daha küçük olacak mı? – fabersky

+1

, Selenium'a bir seçenek aktarma konusunda emin değilsiniz, ancak indirildikten sonra yeniden boyutlandırmak için Imagemagick veya Ruby Ruby RMTick'i kullanabilirsiniz. –

cevap

1

Selenium bir ekran görüntüsünü yeniden boyutlandırmanın bir yolunu sağlamaz. Yine de, daha küçük bir görüntü döndürmek için "screenshot_as" yöntemini kolayca geçersiz kılabilirsiniz.

require 'selenium-webdriver' 
require 'chunky_png' 

module Selenium 
    module WebDriver 
    module DriverExtensions 
     module TakesScreenshot 

     def screenshot_as(format) 

      # take a screenshot and load it with ChunkyPNG 
      img = ChunkyPNG::Image.from_blob(bridge.getScreenshot.unpack("m")[0]) 

      # reduce the size to 80% of the original size 
      img = img.resize((img.width * 0.8).floor, (img.height * 0.8).floor) 

      case format 
      when :base64 
       img.to_blob.pack('A*m') 
      when :png 
       img.to_blob 
      else 
       raise Error::UnsupportedOperationError, "unsupported format: #{format.inspect}" 
      end 
     end 

     end 
    end 
    end 
end 
İlgili konular