使用Selenium + Python滚动到元素后的元素截屏?

3

我想要在Chrome浏览器中截取网站上的某个元素。在进行截图之前,我可以使用以下代码将页面滚动到该元素位置:

element = self.browser.find_element_by_class_name("class_name")
print(game_table.location)
self.browser.execute_script("arguments[0].scrollIntoView();", element)

接下来我想用 PIL 的帮助对此元素进行截图:

location = element.location
size = element.size
img = browser.get_screenshot_as_png()
img = Image.open(io.BytesIO(img))

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

cropBox = (left, top, right, bottom)

img = img.crop(cropBox)
img.save('screenshot.png')

element.location给我元素的坐标,但是截图只能从视图中进行,因此我需要从y-location减去我向下滚动的高度,以获取元素在视图中的位置。

如何获取我向下滚动的高度?或者有更好的解决方案吗?


3
使用 element.location_once_scrolled_into_view 可以获取元素在视口中的位置。而 element.location 是相对于文档的位置。 - Florent B.
@FlorentB。谢谢!现在它可以运行了。请写一个答案来标记问题已解决! - micharaze
2个回答

3

感谢Florent B.的评论!

我将代码行location = element.location改为了:

location = element.location_once_scrolled_into_view

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接