Перейти к содержимому

Фотография

Снятие скриншота элемента - поддержка браузерами


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 z41

z41

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 18 сентября 2018 - 17:07

Привет, пытаюсь снять скриншот элемента. 

Gecko driver снимает скриншот полной страницы. Chromedriver ругается на неизвестную команду "screenshot/<element_id>"

ЧЯДНТ? насколько я понял из ковыряния issues на гитхаб - оба уже должны саппортать эту возможность (а она ну очень сильно нужна).

 

Версии chrome / chromedriver 69 / 2.42. 

Версии Firefox / geckodriver 62 / 0.22

Клиентские библиотеки 3.14 .NET

 

 


  • 0

#2 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 18 сентября 2018 - 18:37

https://github.com/y...x-qatools/ashot
 
WebDriver Screenshot utility
 
Takes a screenshot of a WebElement on different platforms (i.e. desktop browsers, iOS Simulator Mobile Safari, Android Emulator Browser)
пробовали ? 

  • 0

#3 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 18 сентября 2018 - 18:53

я уже потом заметил что вам надо .net -  не знаю куда смотрит сатья н и  что же делать - ashot вам наверное не подходит...


  • 0

#4 z41

z41

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 18 сентября 2018 - 19:00

Как вырезать элемент на скриншоте - это понятно. Но тут проблема в производительности, снятие полного скриншота занимает на моей машине около 0.4с (это уже очень много для моих задач). А на виртуалке, где крутится локальный дженкинс для отладки, 2-4 секунды, что совсем неприемлемо. Есть подозрения, что бутылочным горлышком является сеть, хотел проверить, сделав скриншот отдельного элемента.

Существует также решение html2canvas, которое позволяет делать скриншот кусочка страницы. Оно работает, и вроде в пару раз быстрее, но опять-таки не для меня - не может снять скриншот canvas-элемента. Просто toDataUrl для нужного мне канваса так же не работает в силу особенностей движка приложения (three.js), даже с preserveDrawingBuffer: true. Работающего простого способа я не нашел.

В общем со всех сторон засада. Вероятно, придется модифицировать само приложение. Что очередной квест опять-таки.


  • 0

#5 Noksa

Noksa

    Активный участник

  • Members
  • PipPip
  • 117 сообщений
  • ФИО:Александр

Отправлено 18 сентября 2018 - 20:19

Боюсь что только варик через скрин - ректангл
  • 0

#6 z41

z41

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 19 сентября 2018 - 10:48

Нашел решение, requestAnimationFrame и drawImage для копирования картинки с одного канваса на другой с последующей генерацией png-картинки в base64 через toDataURL помогло.

Впрочем, вопрос по поддержке остался, хоть уже и не критично.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных