Интересно.
А мы можем эту страничку где-то посмотреть?
Можно, но не так просто) Нужно будет зарегистрироваться на крипто бирже, верифицировать клиента. Если интересно поразбираться, можем в личных сообщениях обсудить как все сделать
Да не то, чтобы лично мне это было интересно.
Просто без этой информации вряд ли вам кто-то вообще сможет помочь.
Ну вот не тривиально дойти до этой странички) Возможно, кто-то просто тоже сталкивался с тем, что скрин совершенно другой области получали в итоге.
Посмотрите на верстку в момент снятия скриншота. Возможно, для вашего элемента по локатору находится более одного элемента, и первый по списку – не ваш, он и снимается скриншотом.
Возможно некорректно вычисляется область в методе screenshot. Либо бага, либо попробуйте поставить задержку, так как из за загрузки меняется позиция
А svg элемент выше, что там?
Позиция точно не изменилась. Я дебагом походила. Те там прям приличная задержка.
А svg на одном уровне с div.
Там отрисовка иконки для открытия qr кода
Сделайте скриншот и попробуйте сами отрезать по координатам и размерам картинки
Скриншот всего экрана, получить координаты нужного элемента и его размеры и вырезать. Так?
Честно говорят рассчитывала на метод в Селениде)
Да, там все через селениум можно сделать
Вот в лоб element.screenshot() не работает, к сожалению
Да, похоже, в селениде действительно бага.
Я попробовал на тестах самого селенида - там и правда проверяется только размер скриншота, и он правильный. Но в скриншот попадает не та область.
См. selenide/ScreenshotTest.java at 87745b2429c10cf6be5a137eb4768f701e48971c · selenide/selenide · GitHub
Ну что, это же опенсорс - можете прислать пулреквест.
Сделаю
Кажется, я нашёл причину. Здесь используется метод getSubImage()
и не учитывается, что на Маке два пикселя за один. Если эти цифры умножить на два, получается правильная область.
Осталось понять, как это правильно исправить…
@rid00dle Ах-ха-ха!
Оказывается, в селениуме уже давно добавили метод WebElement.getScreenshotAs
.
Т.е. селенидовский метод $.screenshot
особо больше не нужен.
Поменяйте на
File screenshot = $("#small_div").getScreenshotAs(OutputType.FILE);
Да!
Так все отлично получилось!
Благодарю
Ну, и скоро мы выпустим Selenide 5.25.0, в котором исправим метод $.screenshot().