This can be used no matter what driver that is being used
        * ^ Soon requests support will be added

        Save screenshot to local dir with uuid as filename
        then move the file to `filename` (path must be part of the file name)

        Return the filepath of the image

def screenshot(self, save_path, element=None, delay=0):
        """
        This can be used no matter what driver that is being used
        * ^ Soon requests support will be added

        Save screenshot to local dir with uuid as filename
        then move the file to `filename` (path must be part of the file name)

        Return the filepath of the image
        """
        if save_path is None:
            logger.error("save_path cannot be None")
            return None

        save_location = cutil.norm_path(save_path)
        cutil.create_path(save_location)
        logger.info("Taking screenshot: {filename}".format(filename=save_location))

        if not self.driver_type.startswith('selenium'):
            logger.debug("Create tmp phantomjs web driver for screenshot")
            # Create a tmp phantom driver to take the screenshot for us
            from web_wrapper import DriverSeleniumPhantomJS
            headers = self.get_headers()  # Get headers to pass to the driver
            proxy = self.get_proxy()  # Get the current proxy being used if any
            # TODO: ^ Do the same thing for cookies
            screenshot_web = DriverSeleniumPhantomJS(headers=headers, proxy=proxy)
            screenshot_web.get_site(self.url, page_format='raw')
            screenshot_driver = screenshot_web.driver
        else:
            screenshot_driver = self.driver

        # If a background color does need to be set
        # self.driver.execute_script('document.body.style.background = "{}"'.format('white'))

        # Take screenshot
        # Give the page some extra time to load
        time.sleep(delay)
        if self.driver_type == 'selenium_chrome':
            # Need to do this for chrome to get a fullpage screenshot
            self.chrome_fullpage_screenshot(save_location, delay)
        else:
            screenshot_driver.get_screenshot_as_file(save_location)

        # Use .png extenstion for users save file
        if not save_location.endswith('.png'):
            save_location += '.png'

        # If an element was passed, just get that element so crop the screenshot
        if element is not None:
            logger.debug("Crop screenshot")
            # Crop the image
            el_location = element.location
            el_size = element.size
            try:
                cutil.crop_image(save_location,
                                 output_file=save_location,
                                 width=int(el_size['width']),
                                 height=int(el_size['height']),
                                 x=int(el_location['x']),
                                 y=int(el_location['y']),
                                 )
            except Exception as e:
                raise e.with_traceback(sys.exc_info()[2])

        if not self.driver_type.startswith('selenium'):
            # Quit the tmp driver created to take the screenshot
            screenshot_web.quit()

        return save_location