Как подружить (WebDriver + Java) и Canvas?

java
webdriver
Теги: #<Tag:0x00007fedbaf7fd50> #<Tag:0x00007fedbaf7fb20>

(Alexey Panashchenko) #1

Доброго всем дня!
Такая ситуация, делаем автоматизацию на проекте, работа с графиками. Раньше все рисовалось в html и не было никаких проблем) Сейчас все перевели на Canvas, что дало значимый прирост в производительности приложения но добавило проблем с автоматизацией))

Вот так выглядит сейчас наш DOM:

Посоветуйте как работать с ним ? Нужно кликать по секторам графика, брать список лейблов (CEO, HR Manager etc). узнать количество секторов.
Пробовали Sikuli он он не подходит, уж очень не стабильный(


(5am) #2


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


(Alexey Panashchenko) #3

так просто не можем оставить)))) у нас весь функционал на это завязан)


(rmerkushin) #4

Если не угодил sikuli, используйте JS, как нибудь так:

$(document.elementFromPoint(x, y)).click();

Ну или средствами самого webdriver’а (как у вас в java’х не знаю):

ActionChains(self._current_browser()).move_to_element(element).move_by_offset(xoffset, yoffset).click().perform()

(Alexey Panashchenko) #5

а как получить координаты секторов??? можно получить только координаты канваса


(rmerkushin) #6

Получаете координаты канваса и по оффсету смещаете курсор. Еще как вариант можно перед кликом узнать размер канваса и каким либо образом подогнать координаты, на случай если тестирование будет идти при разных резолюшенах экрана. Но это уже изврат :smile:


(Alexey Panashchenko) #7

можно) но это по сути “пальцем в небо” так как мы ж не знаем на какой координате что находится)


(rmerkushin) #8

Тогда sikuli :smiley:


(Sergey Korol) #9

А в чем проявлялась нестабильность sikuli? Каков был ваш алгоритм распознавания?


(Alexey Panashchenko) #10

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


(Sergey Korol) #11

А что если брать текст относительно цвета со смещением? Находим зону по цвету, смещаемся при помощи above / below / right / left API, берем текст, сравниваем с expected.


(Павел) #12

Дополню автора, так как вместе работаем над этой задачей:)

Есть кейсы в которых надо вычитывать значения которые отображаются (текст), распознавание текста у Sikuli храмает, пробывали прикрутить другие библиотеки, но сервер CentOS, а либы которые могли бы помочь работают нормально на Windows (хотя может плохо искал).

Есть кейс на определение количества сегментов. Это можно сделать через вычетку текста, но опять таки Sikuli плохо с этим справляется.

Cross-browsing. Тесты должны проганяться на Chrome (on CentOS), FF(Windows), Safari, IE10, IE 11. Рендеринг вносит свои коррективы и соответственно один скриншот для всех браузеров не работает, а это +100 к суппорту скриншотов.


(rmerkushin) #13

в сторону OpenCV не смотрели?


(Alexey Panashchenko) #14

та от думал, но там выйдет ацки много всего надо будет делать( сроки не сильно позволяют


(Sergey Korol) #15

Так SikuliX итак построен на базе OpenCV. А распознавание текста реализовано через Tesseract.


(Сергей Блохин) #16

Почему бы не повесить unit-тесты на javascript код, который выводит графики и сверять текст на графике именно там, а не в браузере?