Я пытаюсь сделать полный снимок экрана, но как-то не получается.
Первая попытка:
def screenshot(self):
self.driver.set_window_size(1920, 1080)
self.driver.save_screenshot("screen_1")
self.driver.get_screenshot_as_png()
Что я получаю:
Вторая попытка:
Я также попробовал приведенный ниже код, но кажется, что он разбивает изображения между ними при большой длине страницы.
def save_fullpage_screenshot(self):
time.sleep(3)
# get dimensions
window_height = self.driver.execute_script('return window.innerHeight')
scroll_height = self.driver.execute_script('return document.body.parentNode.scrollHeight')
num = int(math.ceil(float(scroll_height) / float(window_height)))
# get temp files
tempfiles = []
for i in range(num):
fd, path = tempfile.mkstemp(prefix='{0}-{1:02}-'.format("ss_", i + 1), suffix=".png")
os.close(fd)
tempfiles.append(path)
pass
tempfiles_len = len(tempfiles)
try:
# take screenshots
for i, path in enumerate(tempfiles):
if i > 0:
self.driver.execute_script('window.scrollBy(%d,%d)' % (0, window_height))
self.driver.save_screenshot(path)
pass
# stitch images together
stiched = None
for i, path in enumerate(tempfiles):
img = Image.open(path)
w, h = img.size
y = i * window_height
if i == (tempfiles_len - 1) and num > 1:
img = img.crop((
0,
h - (scroll_height % h),
w,
h
))
w, h = img.size
pass
if stiched is None:
stiched = Image.new('RGB', (w, scroll_height))
stiched.paste(img, (
0, # x0
y, # y0
w, # x1
y + h # y1
))
pass
stiched.save("Y:\\ss\\s.png")
finally:
# cleanup
for path in tempfiles:
if os.path.isfile(path):
os.remove(path)
pass
То, что я получаю в результате вывода вышеуказанный код: