2015-10-29 1 views
0

Я использую Selenium web driver и Python для создания сценариев автоматизации для тестирования веб-приложений. Мне нужно выполнить проверку, которая будет сравнивать две строки закодированных файлов png как base64: сохраненное основное изображение и текущее изображение на странице того же веб-элемента. Существует метод в Selenium, что позволяет получить скриншот страницы, как base64 объектКак получить изображение конкретного элемента web как base64

driver.get_screenshot_as_base64()

Но как получить base64 экран не всей страницы, но только из конкретного элемента изображения на странице, не загружая его?

P.S. Возможны и другие способы сравнения двух изображений:

ответ

0

Ответ на другой вопрос, который объясняет, как сделать снимок экрана элемента here. Как только вы это сделаете, вы сможете выполнить сравнение пикселей по пикселям двух изображений. Вы можете использовать Google и находить примеры кода для этого.

Я не вижу много информации о изображениях base64. Похоже, было бы очень классно и просто сравнить два изображения, так как вы просто быстро сравниваете строки, но селен, похоже, не поддерживает скриншот элемента в base64. Возможно, вы могли бы сделать некоторую работу, чтобы сделать снимок экрана, преобразовать его и ссылочный образ в base64, но это, скорее всего, будет больше работы, чем просто использование библиотеки или сравнение двух изображений, которые были сделаны кучей раз до этого и на всем протяжении веб.

0

Следующее должно работать в соответствии с документами, но этого не делает, и для него есть открытая проблема: https://github.com/SeleniumHQ/selenium/issues/912. В то же время, я хотел бы предложить https://stackoverflow.com/a/15870708/1415130

Найти вам элемент страницы веб однако вы хотите - см Документах Locating Elements

login_form = driver.find_element_by_id('loginForm') 

Тогда screen grab the element

screenshot = login_form.screenshot_as_base64() 

Для сравнения скриншотов, я м с помощью подушки.

+0

Это не работает с 'Firefox'. Какой браузер вы используете? 'Edge'? – Andersson

+0

Извините, вы правы, это открытая проблема: https://github.com/SeleniumHQ/selenium/issues/912 – birdsarah

+0

Также не работает на PhantomJS. Для фантомных бросков 'WebDriverException: Сообщение: Invalid Command Method' и для Firefox' WebDriverException: Message: Unrecognized command'. Обходным путем является использование Javascript для создания холста из изображений, а затем сохранить его base64 позже. – erm3nda

Смежные вопросы