В настоящее время я пытаюсь написать скрипт (для подключения к проекту Django), чтобы сделать снимок экрана полной страницы веб-сайта с использованием Selenium.
Кажется, все работает нормально - путь (fullimsavepath) строится нормально (отсюда выводится команда print для вывода, чтобы я мог видеть), селен не сообщает об ошибках, и сценарий завершается нормально. Однако
, когда я ищу фактический скриншот в указанном пути, он там не существует. Что я делаю неправильно? Это как-то связано с относительными и абсолютными путями?
Запуск Python 3.8 на Windows внутри pipenv.
Код:
import time
import os
from sitehawk.settings import BASE_DIR
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from datetime import datetime, date
def takescreenshot(url='http://www.google.com', filename='testpng1'):
options = webdriver.ChromeOptions()
options.headless = True
# Need to replace executable path with environment variable or similar for production?
# At the moment it's an absolute path to the driver
driver = webdriver.Chrome(options=options,executable_path=r'C:/Users/gapbr/Documents/dev/sitehawk/sitehawk-project/screenshots/driver/chromedriver.exe')
driver.get(url)
# Set the path where the image should be saved
actualdate = datetime.now()
yr = actualdate.strftime('%Y')
mn = actualdate.strftime('%m')
filepng = filename+'.png'
fullimsavepath = os.path.join(BASE_DIR,'screenshots','captured-files',yr,mn,filepng)
print(fullimsavepath)
# Take the screenshot
S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
driver.set_window_size(S('Width'),S('Height')) # May need manual adjustment
driver.find_element_by_tag_name('body').screenshot(fullimsavepath)
driver.quit()