Есть код на python:
import pyscreenshot as ImageGrab
from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
display = Display(visible=0, size=(1366, 768)).start()
browser = webdriver.Firefox()
browser.get('https://google.com')
browser.implicitly_wait(10)
print browser.title
img = ImageGrab.grab()
img.save('screen.png');
browser.quit()
display.stop()
Суть его в том, чтобы создать виртуальный дисплей, через selenium webdriver открыть firefox, зайти на страницу
https://google.com и через 10 сек сделать скриншот. Все работает до создания скриншота, потому что строка print browser.title выводит Google, что является правильным заголовком страницы. Последующий код провоцирует ошибку:
Traceback (most recent call last):
File "script.py", line 13, in <module>
img = ImageGrab.grab()
File "/usr/local/lib/python2.7/dist-packages/pyscreenshot/__init__.py", line 70, in grab
return _grab(to_file=False, childprocess=childprocess, backend=backend, bbox=bbox)
File "/usr/local/lib/python2.7/dist-packages/pyscreenshot/__init__.py", line 50, in _grab
backend_obj = _get_loader().selected()
File "/usr/local/lib/python2.7/dist-packages/pyscreenshot/loader.py", line 75, in selected
self.raise_exc()
File "/usr/local/lib/python2.7/dist-packages/pyscreenshot/loader.py", line 83, in raise_exc
raise FailedBackendError(message)
pyscreenshot.loader.FailedBackendError: Install at least one backend!
Ошибка не гуглится, скрипт выполняется под sudo, средствами selenium webdriver скрин делается вот такой командой browser.save_screenshot('path'), но меня он не устраивает, т.к захватывает только область страницы, сам браузер, его вкладки, адресная строка - не видны. И еще, я уверен, что это возможно, т.к проделывал это на другой машине с год назад. Идеи?