Я хочу сделать скриншот всего сайта (а не только видимой части в браузере при его открытии).Я искал решения и нашел много ответов, ни один из которых, похоже, не работает для меня.
Мой текущий подход работает для некоторых веб-сайтов:
from selenium import webdriver
import time
def createPNGChrome(url):
DRIVER = '/Users/userName/PycharmProjects/WebsiteMonitor/Screenshots/chromedriver'
driver = webdriver.Chrome(DRIVER)
driver.get(url)
time.sleep(1.5)
element = driver.find_element_by_tag_name('body')
screenshot = element.screenshot_as_png
driver.quit()
return screenshot
# works
#fullPageScreenshot = createPNGChrome('https://news.ycombinator.com/')
# works
#fullPageScreenshot = createPNGChrome('https://www.spotify.com/de/')
# fails
fullPageScreenshot = createPNGChrome('https://www.de.abbott/media-center/press-releases/05-10-2018.html') # fails
with open('fullPageScreenshot.png', "wb") as file:
file.write(fullPageScreenshot)
Для последнего веб-сайта (abbott) я получаюследующее исключение:
selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot take screenshot with 0 height."}
(Session info: chrome=74.0.3729.169)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.5 x86_64)
Есть ли надежное исправление для этого подхода?Я также согласен с совершенно другими решениями, которые не используют селен, если результаты - надежные полностраничные скриншоты.