2017-09-27 16 views
1

다음 코드를 사용하여 Selenium Webdriver 슬라이더를 움직이려고하는데 아무 일도 일어나지 않습니다. 나는 다른 슬라이더에 대해 동일한 코드를 시도하고 작동한다. 슬라이더는 여기 ("Range")입니다 : 내가 브라우저 크롬, 셀레늄 V3.6.0셀렉니언을 사용하여이 구체 (noUiSlider)를 DragAndDrop하는 방법에 대한 아이디어가 있습니까?

을 사용하고 https://refreshless.com/nouislider/slider-values/

어떻게 다른 내가 슬라이더를 이동할 수 있습니다 ?

 IWebElement knob = driver.FindElement(By.XPath("/html/body/div[2]/section[3]/div[1]/div/div/div/div/div")); 

     //try1 
     Actions a1 = new Actions(driver); 
     a1.DragAndDropToOffset(knob, 30, 0).Build().Perform(); 
     //try2 
     Actions a2 = new Actions(driver); 
     a2.ClickAndHold(knob).MoveByOffset(30, 0).Release().Build().Perform(); 
+0

를 사용하여 호출하려면? 드래그하는 동안 변경된 값을 강조 표시하는이 이미지를 확인하십시오. https://ibb.co/dSJYdk aria-valuenow는 결국 당신이 원하는 것입니다. – user1845593

+0

어떤 셀렌 버전을 사용하고 있습니까? 최신 드라이버 버전이 액션 API를 완벽하게 지원하지 못하는 것 같습니다. – smit9234

답변

1

사용할 수있는 방법 중 하나는 설정하려는 위치에서 슬라이더를 누르는 것입니다.

이 코드를 재사용 할 가능성이 있으므로이 코드를 함수에 넣을 것입니다. 이 함수는 클릭 할 요소 (슬라이더)와 클릭 할 상대 위치를 취합니다. 상대 위치를 %로 생각하면 ... 0.5는 절반, 0.1은 1/10 등입니다. 이 함수는 요소의 너비를 가져 와서 너비를 가로로 적용하여 위치를 가로로 가져옵니다. 수직 위치는 요소 높이의 절반에 불과합니다 (따라서 가운데를 세로로 클릭 함).

static void SetRange(IWebElement e, double range) 
{ 
    int point = (int)(e.Size.Width * range); 
    new Actions(Driver).MoveToElement(e, point, e.Size.Height/2).Click().Build().Perform(); 
} 

당신이 바로 속성의 값을 변경할 수 없습니다

SetRange(Driver.FindElement(By.Id("slider-range")), 0.1); // 0.1 is 10% 
SetRange(Driver.FindElement(By.Id("slider-range")), 0.5); // 0.5 is 50% or halfway