2017-02-20 12 views
0

Я прошел предыдущие сообщения по этому вопросу, и у меня все еще возникают проблемы с его работой.Проблемы с прокруткой по горизонтали в Java/Selenium

У меня есть небольшая полоса прокрутки. Мне нужно перейти вправо, чтобы я мог получить доступ к элементам, которые мне нужно проверить. Код полосы прокрутки выглядит следующим образом:

<div class="ngscroll-scrollbar" ng-style="styles.scrollbar" style="height: 
6px; bottom: 3px; left: 3px; opacity: 0; width: 126.05px; transition: 
opacity 0.3s ease-in-out 0s, border-radius 0.1s linear 0s, height 0.1s 
linear 0s, bottom 0.1s linear 0s; position: absolute; cursor: default; 
background: rgba(0, 0, 0, 0.6) none repeat scroll 0% 0%; border-radius: 3px;"></div> 

полоса прокрутки находится внутри контейнера, я не знаю, если это проблема.

<div class="ngscroll-scrollbar-container" ng-show="!isTouch" ng- 
style="styles.scrollbarContainer" style="bottom: 0px; left: 0px; width: 
100%; height: 12px; margin-left: 0px; position: absolute; transition: 
background 0.3s ease-in-out 0s; border-radius: 6px; background: transparent 
none repeat scroll 0% 0%;"> 

Вот мой код:

WebElement scroll = driver.findElement(By.xpath("//html/body/div[2]/main/div/ui-view/ui-view/div[2]/div/div[1]/su-flight-filters/div/aside/div/section/div/div/div[2]/div/div[2]/div")); 
JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript("document.getElementsByClassName('ngscroll-scrollbar').scrollRight += 50", ""); 

Я не получаю никаких ошибок, но полоса прокрутки не двигается либо. Я пробовал значения 50, 250 и 400.

У кого-нибудь есть идеи?

ответ

0

.getElementsByClassName() возвращает коллекцию. Попробуйте

js.executeScript("document.getElementsByClassName('ngscroll-scrollbar')[0].scrollRight += 50", ""); 

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

класса
+0

Это тоже не работает. Я не уверен, как обращаться с этой коллекцией, есть ли способ распечатать содержимое на консоли, чтобы увидеть, что он содержит? – Sulteric

+0

Вы можете запустить 'document.getElementsByClassName ('ngscroll-scrollbar'). Length' в консоли и посмотреть, сколько совпадений с этим локатором. Вы должны иметь возможность запускать любой из этих JS в консоли и видеть, что он работает. – JeffC

0

Использование Действия для перемещения ползунка, я считаю, это как convnent способ выбрать значение X любой его зависит от ширины вашего слайдера и если вы используете для цикла перетащить указатель на множественное положение

WebElement slider = driver.findElement(By.id("slider")); 
    int width=slider.getSize().getWidth(); 
    Actions move = new Actions(driver); 
    Action action = (Action) move.dragAndDropBy(slider, 30, 0).build(); 
    action.perform(); 
+0

Я думаю, проблема в том, что эту конкретную полосу прокрутки нужно нажать, а затем перетащить. Будет ли это выше? Я попробовал, и я вижу, что он активируется, но он не скользит. Бар шириной 205 и 6 высотой. – Sulteric

+0

или используйте этот код, указав диапазон in in for loop move.moveToElement (слайдер) .click (слайдер) .sendKeys (Keys.ARROW_RIGHT) .perform(); – Dharam

+0

или использовать его ниже в объекте действия, указать количество пикселов, которые нужно перетащить move.moveToElement (draggablePartOfScrollbar) .clickAndHold(). MoveByOffset (0, numberOfPixelsToDragTheScrollbarDown) .release(). Perform(); – Dharam