Невозможно получить правильный снимок экрана, когда сценарий Python запланирован с помощью планировщика задач Windows

Я получил скрипт Python, который делает полный снимок экрана веб-страницы. Когда сценарий выполняется вручную, он работает отлично, и желаемый снимок экрана получается в качестве вывода. Но когда я запланировал это в планировщике задач Windows (Windows 10-64 бит), скриншот, который я получаю, отличается.

При выполнении сценария вручную, изначально сценарий настраивает драйвер Chrome. Затем он развернет окно, передаст URL веб-страницы и сделает снимок экрана на всю страницу.

Но когда сценарий запланирован в планировщике задач, после настройки драйвера chrome метод self.driver.fullscreen_window() не вызывается и окно не развернуто (я думаю, что это может быть причиной. Я не уверен. ведущий снимок экрана, чтобы быть несовершенным. Мне не удалось найти правильное решение для этого. Будет очень полезно, если кто-то сможет решить эту проблему. Заранее спасибо.

import sys
import time
from PIL import Image
from selenium import webdriver

class screencaptureUtils():
    def __init__(self,config,logger):
        self.config = config
        self.logger = logger

    def driver_setup(self):
        try:
            self.driver = webdriver.Chrome(self.config.chromedriverpath)
            self.driver.fullscreen_window()

        except Exception as e:
            self.logger.exception(str(e))

    def tearDown(self):
        self.driver.quit()

    def fullpage_screenshot_capture(self, driver, file):
        try:
            total_width = driver.execute_script("return document.body.offsetWidth")
            total_height = driver.execute_script("return document.body.parentNode.scrollHeight")
            viewport_width = driver.execute_script("return document.body.clientWidth")
            viewport_height = driver.execute_script("return window.innerHeight")
            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
                    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:
                    driver.execute_script("window.scrollTo({0}, {1})".format(rectangle[0], rectangle[1]))
                    time.sleep(0.2)

                file_name = "part_{0}.png".format(part)
                driver.get_screenshot_as_file(file_name)
                screenshot = Image.open(file_name)

                if rectangle[1] + viewport_height > total_height:
                    offset = (rectangle[0], total_height - viewport_height)
                else:
                    offset = (rectangle[0], rectangle[1])

                stitched_image.paste(screenshot, offset)
                del screenshot
                os.remove(file_name)
                part = part + 1
                previous = rectangle
            stitched_image.save(file)
            return True

        except Exception as e:
            self.logger.exception(str(e))

    def fullpage_screenshot_setup(self,webpageurl, imagePath):
        try:
            self.driver.get(webpageurl)
            el=self.driver.find_element_by_tag_name('body')
            self.logger.debug("Enabling Screenshot")            
            el.screenshot(imagePath)           
            self.fullpage_screenshot_capture(self.driver,imagePath)



            self.driver.quit()

        except Exception as e:
            self.logger.exception(str(e))


    def take_screenShot(self,webURL,filePath):

        self.driver_setup()
        self.fullpage_screenshot_setup(webURL,filePath)

0 ответов