Search code examples
pythonselenium-webdriverscreenshot

Selenium Webdriver, screenshot as numpy array (Python)


Is there a way to take a screenshot with selenium webdriver and convert in to a numpy array instead of saving it? I need to use it with openCV.

Note: I don't want to save the image and open it again


Solution

  • I'm sure there is a more efficient way of doing this, but this is what worked for me:

    from selenium import webdriver
    from PIL import Image
    import StringIO
    import numpy as np
    
    browser = webdriver.Firefox()
    browser.get('https://www.google.ca/?gws_rd=ssl')
    
    data = browser.get_screenshot_as_png()
    
    img = Image.open(StringIO.StringIO(data))
    
    numpy_array = np.asarray(img)