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

时间:2018-04-18 19:31:24

标签: python google-chrome selenium python-imaging-library

我想从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位置减去我向下滚动的高度以获取视图中元素的位置。

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

2 个答案:

答案 0 :(得分:1)

我认为您可以使用__init__ javascript函数,但不确定。 你可以在这里找到详细资料文件。

https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect

答案 1 :(得分:0)

感谢Florent B.'s comment!

我将行<iframe width="100%" height="500" src="//jsfiddle.net/c7s086tb/embedded/result/" allowpaymentrequest allowfullscreen="allowfullscreen" frameborder="0"></iframe>更改为

location = element.location