用pyscreenshot拍摄元素截图

时间:2019-02-28 10:42:12

标签: python python-3.x selenium screenshot

我正在尝试使用Selenium和Pyscreenshot截取网页中特定元素的屏幕截图。

这是我的代码:

driver = webdriver.Chrome('./chromedriver')
driver.get("https://kmong.com/?gclid=Cj0KCQiA7briBRD7ARIsABhX8aBKVDTUh1xRgGdYVos02DXaVzR-YWe66W9HTYcG_459B0XKpSnAt4MaArhYEALw_wcB")
e = driver.find_element_by_xpath('//*[@id="kmongNavBar"]/div[2]/div[1]/div[1]/div[1]/div/a/img')

location = e.location;
size = e.size;
print(location)
print(size)

x = location['x']
y = location['y']
z = location['x']+size['width']
h = location['y']+size['height']

im=ImgGrab.grab(bbox=(x, z, y, h))
im.save('test.png')

我想得到这个: enter image description here

相反,我得到这个: enter image description here

所以我必须假设pyscreenshot拍摄的是我的屏幕上而不是硒屏幕上的照片。

如何解决仅在硒页面上限制的坐标?

  

好的,感谢评论,我的工作顺利了:

     

driver.find_element_by_xpath('// * [@ id =“ catch”]')。screenshot(“ catch.png”)

     

但是现在这不会保存文件,而是在浏览器中打开。

     

如何更改代码以保存文件?

1 个答案:

答案 0 :(得分:0)

您无需使用pyscreenshot,可以直接使用webdriver进行操作,如下所示:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.example.com/')
browser.save_screenshot('image.png')
browser.quit()

编辑: WebElement有一个.screenshot()方法,可用于获取该特定元素的屏幕截图。