Используя location_once_scrolled_into_view и хотите центрировать - PullRequest
0 голосов
/ 20 января 2020

Я использую location_once_scrolled_into_view для прокрутки до указанных c элементов на веб-странице. После того, как я нахожу эти элементы, я делаю скриншоты из них. Проблема, с которой я сталкиваюсь, заключается в том, что страница заканчивается прокруткой до максимума и помещает элементы под панель навигации. Как только он делает снимок экрана, это просто изображение навигационной панели. Есть ли способ продолжить использование location_once_scrolled_into_view, но не прокручивать его полностью до верхней части страницы. Но вместо этого в центр страницы?

Вот код для моей функции скриншота:

def take_screenshot(element, driver, filename):
    location = element.location_once_scrolled_into_view

    size = element.size
    png = driver.get_screenshot_as_png() # saves screenshot of entire page
    im = Image.open(BytesIO(png)) # uses PIL library to open image in memory



    left = location['x']
    top = location['y']
    right = location['x'] + size['width']
    bottom = location['y'] + size['height']

    im = im.crop((left, top, right, bottom)) # defines crop points
    w , h = im.size
    if w > 0 and h > 0:
        im.save(filename)# saves new cropped image 

1 Ответ

1 голос
/ 20 января 2020

Вы можете использовать JavaScript scrollIntoView с параметрами :

driver.execute_script('arguments[0].scrollIntoView({block: "center", inline: "center"})', element)
...