使用 selenium/python 获取相对于视口的元素位置

Mic*_*air 2 python selenium google-chrome

我正在使用以下代码截取屏幕截图并仅裁剪我想要的元素。但是,由于 Chrome 仅截取视口的屏幕截图,因此顶部数字太大,因为它是从页面顶部开始计算的。有没有办法获得相对于视口的位置?

element = browser.find_element_by_xpath(locator)
browser.save_screenshot('screenshot.png')
location = element.location
size = element.size
im = Image.open('screenshot.png')           
left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']
im = im.crop((int(left), int(top), int(right), int(bottom)))
im.save('screenshot2.png')
Run Code Online (Sandbox Code Playgroud)

Mic*_*air 7

我能够通过滚动到元素来使其工作,稍微向上滚动(从标题下方出来),然后获取滚动位置并从顶部数字中减去它

element = browser.find_element_by_xpath(locator)
browser.execute_script("return arguments[0].scrollIntoView();", element)
browser.execute_script("window.scrollBy(0, -150);")
browser.save_screenshot('screenshot.png')
location = element.location
scroll = browser.execute_script("return window.scrollY;")
size = element.size
im = Image.open('screenshot.png')           
left = location['x']
top = location['y'] - scroll
right = location['x'] + size['width']
bottom = location['y'] + size['height'] - scroll
im = im.crop((int(left), int(top), int(right), int(bottom)))
im.save('screenshot2.png')
Run Code Online (Sandbox Code Playgroud)