Python/chromedriver: Screenshot-Größe vs. Fenstergröße

OP #5688332
Lesenswert?

Hallo zusammen,

mein Ziel ist es, einen Screenshot einer gerenderten HTML-Seite 
geskriptet zu erstellen. Momentan probiere ich es mit Python und 
Selenium mit dem Chrome- oder Firefox. Das Erstellen des Screenshots 
funktioniert grob, allerdings ist der Screenshot immer deutlich kleiner 
als die Fenstergröße. Ein (variabler) Rand wird immer abgezogen.

Leider finde ich keinen Parameter, der den Rand beschreibt. Wer hat 
Erfahrunng mit einem der beiden Renderer und kann einen Tipp geben?

So sieht es bislang aus:
1
from PIL import Image
2
import os
3
from selenium import webdriver
4

5

6
htmlfile = htmlfile = r"https://www.mikrocontroller.net/forum/all"
7

8
tempfile = r"./screenshot_temp.png"
9

10

11
width = 800
12
height = 600
13
margin_left = 0
14
margin_right = 0
15
margin_top = 0
16
margin_bottom = 0
17

18

19
# spaeter testen, was besser funktioniert:
20
#driver = webdriver.Firefox() 
21
driver = webdriver.Chrome('chromedriver')
22

23

24
driver.set_window_size(width+margin_left+margin_right, margin_top+height+margin_bottom)
25
driver.get(htmlfile)
26

27
screenshot = driver.save_screenshot(tempfile)
28
#driver.quit() # Zu Testzwecken Fenster nicht schließen
29

30

31
image = Image.open(tempfile).convert('RGBA')
32
image.show()
33
print(image.width, 'x', image.height)
34
# >>> 784 x 468

Viele Grüße

W.T.
Gast #5688579
Lesenswert?

Dein Problem klingt jetzt nicht so Exotisch für mich. Wenn ich google 
mit der query "selenium full page screenshot python" bekomme ich zum 
Beispiel diesen Code angezeigt 
https://gist.github.com/fabth/13e4a2e7cfbfde671b8fa81bbe9359fb löst der 
dein Problem? Auch Wenn es Python2 ist und ich persönlich Python3 
vorziehe. Sollte das vielleicht eine Basis sein mit der du dein Problem 
angehen kannst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren