Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

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

java
webdriver
selenium
Теги: #<Tag:0x00007fedc08eaca0> #<Tag:0x00007fedc08e93c8> #<Tag:0x00007fedc08f4f70>

#1

Доброго времени суток!
Я совсем недавно занимаюсь написанием автотестов, но наткнулся на проблему манипуляции со слайдером в 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?``


(Yaroslav Pernerovskyy) #2

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


(Roma Marinsky) #3

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


#4

Selenide 4.5.1
Selenium 3.4
Firefox (gecko)


#5

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


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


(Andrey Melnichenko) #6

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


(asolntsev) #7

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


(Sergey Korol) #8

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

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

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


(Andrey Melnichenko) #9

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


(Sergey Korol) #10

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

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


(Andrey Melnichenko) #11

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


(Sergey Korol) #12

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