1
|
from selenium import webdriver
|
2
|
from PIL import Image
|
3
|
from io import BytesIO
|
4
|
|
5
|
window_size_x = 1280
|
6
|
window_size_y = 960
|
7
|
safety_margin_x = 200
|
8
|
safety_margin_y = 200
|
9
|
step_x = window_size_x - safety_margin_x
|
10
|
step_y = window_size_y - safety_margin_y
|
11
|
|
12
|
driver = webdriver.Chrome()
|
13
|
driver.set_window_size(window_size_x, window_size_y)
|
14
|
|
15
|
driver.get('http://selenium-python.readthedocs.io/getting-started.html')
|
16
|
element = driver.find_element_by_id('getting-started')
|
17
|
|
18
|
location = element.location
|
19
|
size = element.size
|
20
|
left = location['x']
|
21
|
top = location['y']
|
22
|
right = location['x'] + size['width']
|
23
|
bottom = location['y'] + size['height']
|
24
|
|
25
|
cursor_x = 0
|
26
|
cursor_y = 0
|
27
|
|
28
|
right_scrolls = int(right) / step_x + 1
|
29
|
down_scrolls = int(bottom) / step_y + 1
|
30
|
|
31
|
image = Image.new('RGB', (right_scrolls * step_x, down_scrolls * step_y))
|
32
|
|
33
|
for x in range(right_scrolls):
|
34
|
driver.execute_script("window.scrollTo({}, 0)".format(step_x*x))
|
35
|
for y in range(down_scrolls):
|
36
|
driver.execute_script("window.scrollTo(0, {})".format(step_y*y))
|
37
|
png = driver.get_screenshot_as_png()
|
38
|
tmp_im = Image.open(BytesIO(png))
|
39
|
image.paste(tmp_im, (x * step_x, y * step_y))
|
40
|
tmp_im.close()
|
41
|
driver.quit()
|
42
|
|
43
|
image = image.crop((left, top, right, bottom))
|
44
|
image.save('screenshot.png')
|