Цикл while остановлен из-за «событий ориентации устройства заблокированы политикой компонентов». - PullRequest
0 голосов
/ 08 октября 2019

Я пытался сделать снимки экрана сайта с помощью chromedriver в Python.

У меня есть цикл while, который должен непрерывно делать снимки экрана, пока сайт не будет выглядеть по-другому.

Сценарий работает только в течение 2 итераций (i = 2), а затем выдает следующую ошибку в командной строке.

[1008 / 123629.610: INFO: CONSOLE (118)] "События ориентации устройства заблокированы функциейполитика. См. https://github.com/WICG/feature-policy/blob/master/features.md#sensor-features", источник: https://z.moatads.com/performgroupjsvideo844424951729/moatvideo.js (118) [1008 / 123629.611: INFO: CONSOLE (3072)] "reloadLostZones", источник: https://wfpscripts.webspectator.com/ws-dev.js (3072)

Я не уверен, как решить проблему.

Ниже приведен основной сценарий с циклом while.

from PIL import Image
import screenshot_capture as sc
from crop_test import crop
import time

i =1
sc.screenshot_capture(i,'https://www.goal.com')
time.sleep(30)
image = 'screen_shot' + str(i) +'.png'
#crop(image, (300, 396, 1183, 1383), 'cropped5.png')
crop(image, (300, 396, 500, 1383), 'cropped' + str(i) +'.png')


while True:
    print(i)
    i += 1
    preimage = image
    sc.screenshot_capture(i,'https://www.goal.com')
    time.sleep(30)
    image = 'screen_shot' + str(i) +'.png'
    #crop(image, (300, 396, 1183, 1383), 'cropped5.png')
    crop(image, (300, 396, 500, 1383), 'cropped' + str(i) +'.png')
    if preimage != image:
        break

Ниже приведен сценарий обрезки изображений.

from PIL import Image



def crop(image_path, coords, saved_location):
    """
    @param image_path: The path to the image to edit
    @param coords: A tuple of x/y coordinates (x1, y1, x2, y2)
    @param saved_location: Path to save the cropped image
    """
    image_obj = Image.open(image_path)
    cropped_image = image_obj.crop(coords)
    cropped_image.save(saved_location)
    #cropped_image.show()

Ниже приведен скрипт для захвата скриншотов.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

def screenshot_capture(itnum,address):

    driver = webdriver.Chrome()
    driver.get(address)
    #pause 3 second to let page load
    time.sleep(3)
    #get scroll Height
    height = driver.execute_script("return Math.max( document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight )")
    print(height)
    #close browser
    driver.close()

    #Open another headless browser with height extracted above
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument(f"--window-size=1920,{height}")
    chrome_options.add_argument("--hide-scrollbars")
    driver = webdriver.Chrome(options=chrome_options)

    driver.get(address)
    #pause 3 second to let page loads
    time.sleep(3)
    #save screenshot
    imagetitle = 'screen_shot' + str(itnum) +'.png'
    driver.save_screenshot(imagetitle)
    driver.close()
...