Selenide. Получение qr кода и его проверка

Добрый день!
Встала передо мной задача проверить корректность qr кода
И вот я никак не могу получить скрин именно нужного мне элемента
Сам элемент:

<div class="qr-pop-up qr-pop-up--opened">
<canvas width="296" height="296" style="width: 148px; height: 148px;"></canvas>
<div class="qr-pop-up__close" tabindex="0"></div>
</div>

Пытаюсь сделать скрин этого канваса:
qrCanvas.screenshot()

И мне возвращается вообще скрин другой области. Какая хитрость должна быть еще, что бы получить скрин того, что нужно?

Интересно.
А мы можем эту страничку где-то посмотреть?

Можно, но не так просто) Нужно будет зарегистрироваться на крипто бирже, верифицировать клиента. Если интересно поразбираться, можем в личных сообщениях обсудить как все сделать

Да не то, чтобы лично мне это было интересно. :slight_smile:
Просто без этой информации вряд ли вам кто-то вообще сможет помочь.

Ну вот не тривиально дойти до этой странички) Возможно, кто-то просто тоже сталкивался с тем, что скрин совершенно другой области получали в итоге.

Посмотрите на верстку в момент снятия скриншота. Возможно, для вашего элемента по локатору находится более одного элемента, и первый по списку – не ваш, он и снимается скриншотом.

Я проверила. Элемент один

А вот скрин:
image

Верно только то, что это квадрат нужного размера)

Возможно некорректно вычисляется область в методе screenshot. Либо бага, либо попробуйте поставить задержку, так как из за загрузки меняется позиция

А svg элемент выше, что там?

Позиция точно не изменилась. Я дебагом походила. Те там прям приличная задержка.

А svg на одном уровне с div.
Там отрисовка иконки для открытия qr кода

Сделайте скриншот и попробуйте сами отрезать по координатам и размерам картинки

Скриншот всего экрана, получить координаты нужного элемента и его размеры и вырезать. Так?
Честно говорят рассчитывала на метод в Селениде)

Да, там все через селениум можно сделать

Вот в лоб element.screenshot() не работает, к сожалению

Да, похоже, в селениде действительно бага.
Я попробовал на тестах самого селенида - там и правда проверяется только размер скриншота, и он правильный. Но в скриншот попадает не та область. :slight_smile:
См. selenide/ScreenshotTest.java at 87745b2429c10cf6be5a137eb4768f701e48971c · selenide/selenide · GitHub

Ну что, это же опенсорс - можете прислать пулреквест. :slight_smile:

Сделаю :wink:

2 лайка

Кажется, я нашёл причину. Здесь используется метод getSubImage() и не учитывается, что на Маке два пикселя за один. Если эти цифры умножить на два, получается правильная область.

Осталось понять, как это правильно исправить…

@rid00dle Ах-ха-ха!
Оказывается, в селениуме уже давно добавили метод WebElement.getScreenshotAs.
Т.е. селенидовский метод $.screenshot особо больше не нужен.

Поменяйте на

File screenshot = $("#small_div").getScreenshotAs(OutputType.FILE);
1 лайк

Да! :dancer:t2:
Так все отлично получилось!
Благодарю