снимать скриншот элемента с pyscreenshot - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь сделать снимок определенного элемента на веб-странице, используя 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 делает снимки на экране ЭКРАН, а не на селене.

Как мне адресовать координаты для ограничения исключительно на странице Selenium?

Хорошо, благодаря комментарию, я получил эту работу:

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

но теперь это не сохраняет файл, а скорее откройте в браузере.

Как мне изменитькод для сохранения файла вместо ??

1 Ответ

0 голосов
/ 28 февраля 2019

Вам не нужно использовать pyscreenshot, для этого вы можете напрямую использовать веб-драйвер, как показано ниже:

from selenium import webdriver

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

РЕДАКТИРОВАТЬ: WebElement имеет .screenshot()метод, который вы можете использовать для создания снимка экрана этого конкретного элемента.

...