我正在尝试使用以下代码移动带有Selenium Webdriver
的滑块,但没有任何反应。我尝试了相同的代码用于不同的滑块,它的工作原理。滑块位于("Range")
:https://refreshless.com/nouislider/slider-values/
我使用的是浏览器Chrome,Selenium 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 :(得分: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