Доброго времени суток!
Я совсем недавно занимаюсь написанием автотестов, но наткнулся на проблему манипуляции со слайдером в selenide.
В целом, слайдер похож на тот, что есть здесь в конце статьи: http://internetka.in.ua/selenium-drag-and-drop/
Вычислять на сколько его нужно сдвинуть не требуется - это адаптированный тест. (-17px, 0)
При обработке приведенного кода:
Решил новую тему не создавать т.к. похожая ситуация у меня повстречалась. Десктоп на Ангуляре 5-м. Тесты пишу на Java+Selenide
Нужно перетащить один обьект на другой обьект.
Селекторы есть. Код: homePage.deviceCssItem().dragAndDropTo(homePage.dragArea());
deviceCssItem() - то что мы тащим
homePage.dragArea() - то куда тащим, при "натаскивании одного на другое обьект как-будто падает в папку)))
Но у меня обьект прилипает к мышке и ничего не происходит.
Подскажите как решить проблему
Ох да, это вечная история. ДрагЭндДроп в селениуме не во всех браузерах работает. А может, и вообще ни в каких. Единственное известное мне решение - установить значение слайдера с помощью вызова нужного JS кода.
Простого решения нет, и не будет. Все современные библиотеки ориентируются на физические координаты мыши. А курсор селениумом перетянуть вы не сможете никак. Впрочем, как и чистым JSом. Следовательно при попытке драга объекта, он якобы прилипает к курсору. Но т.к. курсор никуда не перемещается, ваш объект остается висеть на месте.
Тут либо надо брать какие-то OCR тулы, либо смириться.
П.С. В случае со слайдером - можно JSом установить нужное значение, как уже посоветовали выше. Не знаю, как с ангуляром, но в реакте такое действие тоже сделать непросто, ввиду “закрытости” компонентов. У нас девелоперы для тестового окружения прокидывали спец. объекты для возможности доступа к закрытым компонентам.
Robot работает только локально + требует active desktop. Т.е. код с роботом должен физически запускаться непосредственно там, где поднимаются браузеры. Ну и никаких headless режимов / скринсейверов / залоченных десктопов и т.п.
Нет. Selenoid запускается в независимой среде. Разве что вы пересоберете контейнер с браузером, добавив код управления курсором и соответствующий end point.