The problem is that I need capture web-site screenshots without running X server.
So theoretically it's possible to create a virtual frame buffer and to use it to capture screenshot.
Is there any similar solutions, any advice would be appreciated?
Sultan
you can use a combination of Selenium WebDriver and pyvirtualdisplay (which uses xvfb) to run your browser in a virtual display and capture screenshots.
so, the setup you need is:
- Selenium Python bindings
- pyvirtualdisplay Python package (depends on xvfb)
On Debian/Ubuntu Linux systems, you can setup everything with:
$ sudo apt-get install python-pip xvfb
$ sudo pip install selenium
once you have it setup, the following code example should work:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Firefox()
browser.get('http://www.google.com')
browser.save_screenshot('screenie.png')
browser.quit()
display.stop()
this will:
- launch a virtual display
- launch Firefox browser
- navigate to google.com
- capture a screenshot
- close the browser
- stop the virtual display