2017-09-27 85 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 
相關問題