Манипуляции со слайдером в selenide с помощью actions()

Доброго времени суток!
Я совсем недавно занимаюсь написанием автотестов, но наткнулся на проблему манипуляции со слайдером в selenide.
В целом, слайдер похож на тот, что есть здесь в конце статьи:
http://internetka.in.ua/selenium-drag-and-drop/
Вычислять на сколько его нужно сдвинуть не требуется - это адаптированный тест. (-17px, 0)
При обработке приведенного кода:

$(“#similarityv”).shouldHave(text(“0.8”));
actions().dragAndDropBy($(“#similarityc”), -17, 0).build().perform();

выдает следующую ошибку:
Unable to convert: {actions=[org.openqa.selenium.interactions.Sequence@75ab270f]}

HTML:

Как добиться перемещения слайдера влево со значением 0.7?``

джаваскриптом. спросите разработчиков, какой метод дергать и дергайте.

Версия selenide какая? и в либах какая версия selenium? какой браузер?

Selenide 4.5.1
Selenium 3.4
Firefox (gecko)

Спасибо!
Покопал в этом направлении.
Я, к сожалению, не предоставил достаточный набор HTML для решения проблемы:


Код:
$("#similarityv").shouldHave(text(“0.8”));
executeJavaScript(“document.getElementById(‘Similarity’).style.display = ‘inline’;”);
$("#Similarity").val(“0.7”);

Решил новую тему не создавать т.к. похожая ситуация у меня повстречалась. Десктоп на Ангуляре 5-м. Тесты пишу на Java+Selenide
Нужно перетащить один обьект на другой обьект.
Селекторы есть. Код:
homePage.deviceCssItem().dragAndDropTo(homePage.dragArea());
deviceCssItem() - то что мы тащим
homePage.dragArea() - то куда тащим, при "натаскивании одного на другое обьект как-будто падает в папку)))
Но у меня обьект прилипает к мышке и ничего не происходит.
Подскажите как решить проблему

Ох да, это вечная история. ДрагЭндДроп в селениуме не во всех браузерах работает. А может, и вообще ни в каких. Единственное известное мне решение - установить значение слайдера с помощью вызова нужного JS кода.

Простого решения нет, и не будет. Все современные библиотеки ориентируются на физические координаты мыши. А курсор селениумом перетянуть вы не сможете никак. Впрочем, как и чистым JSом. Следовательно при попытке драга объекта, он якобы прилипает к курсору. Но т.к. курсор никуда не перемещается, ваш объект остается висеть на месте.

Тут либо надо брать какие-то OCR тулы, либо смириться. :slight_smile:

П.С. В случае со слайдером - можно JSом установить нужное значение, как уже посоветовали выше. Не знаю, как с ангуляром, но в реакте такое действие тоже сделать непросто, ввиду “закрытости” компонентов. У нас девелоперы для тестового окружения прокидывали спец. объекты для возможности доступа к закрытым компонентам.

Спасибо!
В Java это можно сделать с помощью класса Robot или возможно порекомендуете что для управления курсором использовать?

Robot работает только локально + требует active desktop. Т.е. код с роботом должен физически запускаться непосредственно там, где поднимаются браузеры. Ну и никаких headless режимов / скринсейверов / залоченных десктопов и т.п.

У всяких SikuliX / AutoIT такие же “проблемы”.

1 Like

т.е. в Selenoid я не смогу курсором управлять

Нет. Selenoid запускается в независимой среде. Разве что вы пересоберете контейнер с браузером, добавив код управления курсором и соответствующий end point.