Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Получение координат и размера элемента webelement


(Max Davion) #1

Коллеги, в связи с тем что на python нет никакого более-менее нормального аналога ashot или gemini - пытаюсь написать скрипт который делает скриншот всей страницы, находит элемент, берет его координаты и вырезает из полученного скрина. Потом полученный скрин элемента сравнивается с базовым.

Но возникла проблема при получении координат и размера элемента.
Допустим хочу получить элемент поисковой строки яндекса http://prntscr.com/dorwq3 по размерам он 692 x 46

Сам webdriver при выполнении скрипта мне говорит эти же размеры element.size {‘width’: 692, ‘height’: 46}

    driver = webdriver.Chrome()
    driver.set_window_position(0,0)
    driver.set_window_size(1024, 768)
    driver.get("https://ya.ru/")
    element = driver.find_element_by_css_selector("div.search2__input")
    driver.get_screenshot_as_file('screenshot.png')
    print element.location
    print element.size

Однако когда я открываю полученный скрин http://prnt.sc/doxrof - то реальные размеры на нем другие. То же самое и с location. И соответственно если я вырежу по координатам часть картинки - то нужный мне элемент туда не попадет полностью.

Самое интересное что скрин сделанный с помощью PhantomJS отображает нормальные размеры http://prntscr.com/doxu8i

Кто нибудь сталкивался с таким поведением?


(rmerkushin) #2

Не придумывайте велосипед :slight_smile: Читайте офф док по биндингу selenium для Python. У класса WebElement есть метод screenshot.
http://selenium-python.readthedocs.io/api.html


(Yaroslav Pernerovskyy) #3

У вас же ретина скрин наверное. А фантом потому и дает правильные размеры, что не скейлит при рендеринге.