@staticmethod
    def chrome_take_full_page_screenshot(file):
        Global.browser.maximize_window()
        Global.scroll_to_zero()
        time.sleep(0.2)

        Log.Debug("Starting chrome full page screenshot workaround ...")

        total_width = Global.browser.execute_script("return document.body.offsetWidth")
        total_height = Global.browser.execute_script("return document.body.parentNode.scrollHeight")

        viewport_width = Global.browser.execute_script("return document.body.clientWidth")
        viewport_height = Global.browser.execute_script("return window.innerHeight")

        Log.Debug("Total: ({0}, {1}), Viewport: ({2},{3})".format(total_width, total_height,viewport_width,viewport_height))

        rectangles = []

        i = 0
        while i < total_height:
            ii = 0
            top_height = i + viewport_height

            if top_height > total_height:
                top_height = total_height

            while ii < total_width:
                top_width = ii + viewport_width

                if top_width > total_width:
                    top_width = total_width

                Log.Debug("Appending rectangle ({0},{1},{2},{3})".format(ii,i,top_width,top_height))
                rectangles.append((ii,i,top_width,top_height))

                ii = ii + viewport_width

            i = i + viewport_height


        stitched_image = Image.new('RGB', (total_width, total_height))
        previous = None
        part = 0
        for rectangle in rectangles:
            if not previous is None:
                Global.browser.execute_script("window.scrollTo({0}, {1})".format(rectangle[0], rectangle[1]))
                Log.Debug("Scrolled To ({0},{1})".format(rectangle[0], rectangle[1]))
                time.sleep(0.2)

            file_name = "{0}scroll_{1}_part_{2}.png".format(Config.tmp_path, Global.cache_id, part)
            Log.Debug("Capturing {0} ...".format(file_name))

            Global.browser.get_screenshot_as_file(file_name)

            screenshot = Image.open(file_name)

            offset = (rectangle[0], rectangle[1])

            Log.Debug("Adding to stitched image with offset ({0}, {1})".format(offset[0],offset[1]))
            stitched_image.paste(screenshot, offset)

            del screenshot

            os.remove(file_name)

            part = part + 1
            previous = rectangle

        stitched_image.save(file)

        Log.Debug("Finishing chrome full page screenshot workaround ...")

        return True