selenium webdriver move slider on left side

后端 未结 7 576
旧巷少年郎
旧巷少年郎 2020-12-18 16:35

I want to move slider on left side of slider-bar. However, selenium webdriver moves it to right side but it does not move to left side. I want to move slider to 25% of total

相关标签:
7条回答
  • 2020-12-18 17:09

    I always use this code to move a slide bar:

    action.click(webElement).build().perform();
    Thread.sleep(1000);
    for (int i = 0; i < 10; i++) {
        action.sendKeys(Keys.ARROW_LEFT).build().perform();
        Thread.sleep(200);
    }
    
    0 讨论(0)
  • 2020-12-18 17:10

    You need to first switch to the iframe it is contained in i.e.

    <iframe class="demo-frame" src="/resources/demos/slider/default.html">
    

    after that you can perform slide using JavascriptExecutor:

    ((JavascriptExecutor) driver).executeScript("document.getElementsByTagName('span')[0].style.left='50%'"); // 50% or whatever you like to provide.
    
    0 讨论(0)
  • 2020-12-18 17:15

    Simply add a minus to the 25

    org.openqa.selenium.interactions.Action action  = move.dragAndDropBy(slider, ((width*-25)/100), 0).build();
    
    • Positive values go to the right
    • Negative values go to the left

    The same applys to scrolling pages.

    Also just a note for you. I had some issues with this approach due to the width I wanted to move being a decimal amount. I suggest actually setting the attribute DOM value for the slider instead

    0 讨论(0)
  • 2020-12-18 17:20

    Below code worked fine for my application:

       WebElement slider = driver.findElement(By.xpath("//input[@id='savingsSlider']"));
            for(int i=0;i<=30;i++){
                             //Slide to RIGHT
                            slider.sendKeys(Keys.ARROW_RIGHT);
                            //Slide to LEFT
                            slider.sendKeys(Keys.ARROW_LEFT);
                        }
    
    0 讨论(0)
  • 2020-12-18 17:21

    I've used this with success.

    var sliderA = driver.FindElementsByCssSelector(".ccwa")[0];
            var sliderB = driver.FindElementsByCssSelector(".ccwa")[1];
            Actions action = new Actions(driver);
            for (int i = 0; i < 5; i++)
            {
                action.DragAndDropToOffset(sliderA, 50, 0).Build().Perform();
                Thread.Sleep(300);
    
                action.DragAndDropToOffset(sliderB, 50, 0).Build().Perform();                
                Thread.Sleep(300);
            }
    
    0 讨论(0)
  • 2020-12-18 17:25

    Well, I was not able to move the slider using all the possible option using dragAndDropBy and clickAndHold. However, using below snippet I was able to move slider to exact location of slid-bar. I am still wondering what was wrong in above code which does not move the slider to exact location as I was expecting.

    you can set choose value of X is any its depends of width of your slider and if you use for loop to drag pointer on multiple position

    public static void slider(){
      x=10;
        WebElement slider = driver.findElement(By.id("slider"));
        int width=slider.getSize().getWidth();
        Actions move = new Actions(driver);
        move.moveToElement(slider, ((width*x)/100), 0).click();
        move.build().perform();
        System.out.println("Slider moved");
    }
    
    0 讨论(0)
提交回复
热议问题