http://qiita.com/myhr/items/dff7cee30182ab56f737
これのruby版。
ImageMagickが要る。
require "selenium-webdriver"
require 'rmagick'
module ChromeScreenShot
def take_fullscreenshot(fname = "out.png")
innerH = self.execute_script("return window.innerHeight")
innerW = self.execute_script("return window.innerWidth")
pageH = self.execute_script("return document.documentElement.scrollHeight")
pageW = self.execute_script("return document.documentElement.scrollWidth")
#p [innerW, innerH, pageW, pageH]
img = Magick::Image.new(pageW, pageH)
posY = 0
while posY < pageH
posX = 0
while posX < pageW
if posX > 0 and posX+innerW > pageW
posX -= posX+innerW - pageW
end
if posY > 0 and posY+innerH > pageH
posY -= posY+innerH - pageH
end
self.execute_script("window.scrollTo(%d, %d)" % [posX, posY])
# NOTE: save_screenshot しないと scrollTo が反映されてないことがあった
self.save_screenshot("/tmp/%s.%d_%d.png" % [fname, posX, posY])
partial = Magick::Image.from_blob( self.screenshot_as(:png) )
img.composite!(partial.first, posX, posY, Magick::OverCompositeOp)
#p [posX, posY]
posX += innerW
end
posY += innerH
end
img.write(fname)
end
end
url = "http://qiita.com/myhr/items/dff7cee30182ab56f737"
wd = Selenium::WebDriver.for :chrome
wd.extend ChromeScreenShot
wd.navigate.to url
wd.take_fullscreenshot
wd.quit
ちなみに
position:fixed
な要素があるとうまくいかないんだけど何か良さげな解決案ないですかね。