2017-09-27 26 views
1

我想使用下面的代码来移动滑块Selenium Webdriver,但没有任何反应。我为不同的滑块尝试了相同的代码,并且工作正常。滑块在这里("Range")https://refreshless.com/nouislider/slider-values/有人想法如何DragAndDrop这个指定(noUiSlider)与硒?

我使用的浏览器Chrome浏览器,硒V3.6.0

怎么我还能动滑块?

 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

你使用的是什么版本的硒?看起来最新的驱动程序版本不完全支持Actions 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