我正在尝试使用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')
所以我必须假设pyscreenshot拍摄的是我的屏幕上而不是硒屏幕上的照片。
如何解决仅在硒页面上限制的坐标?
好的,感谢评论,我的工作顺利了:
driver.find_element_by_xpath('// * [@ id =“ catch”]')。screenshot(“ catch.png”)
但是现在这不会保存文件,而是在浏览器中打开。
如何更改代码以保存文件?
答案 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()
方法,可用于获取该特定元素的屏幕截图。