硒webdriver在左侧移动滑块

时间:2015-02-11 11:30:19

标签: java selenium-webdriver testng

我想移动滑块左侧的滑块。但是,selenium webdriver将它移动到右侧但它不会移动到左侧。我想将滑块移动到滑杆总宽度的25%。我使用下面给出的代码与java 1.8与selenium 2.44。我已经尝试了使用向上,向下,向左,向右箭头键的所有选项,但仍然无法实现它。

我很感激您的意见。

package RandD;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;

public class test{
static WebDriver driver;
public static void main(String[] args)

{
    driver = new FirefoxDriver();
    driver.get("http://jqueryui.com/slider/");
    driver.switchTo().frame(0);
    slider();
}

public static void slider(){
    WebElement slider = driver.findElement(By.id("slider"));
    int width=slider.getSize().getWidth();
    Actions move = new Actions(driver);
    org.openqa.selenium.interactions.Action action  = move.dragAndDropBy(slider, ((width*25)/100), 0).build();
    action.perform();
    System.out.println("Slider moved");
}
}

8 个答案:

答案 0 :(得分:4)

我总是使用此代码移动幻灯片栏:

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);
}

答案 1 :(得分:3)

好吧,我无法使用dragAndDropBy和clickAndHold使用所有可能的选项移动滑块。但是,使用下面的代码片段,我可以将滑块移动到滑动条的确切位置。我仍然想知道上面的代码有什么问题,它没有像我期望的那样将滑块移动到准确的位置。

你可以设置X的选择值是否取决于滑块的宽度,以及你是否使用for循环将指针拖到多个位置

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");
}

答案 2 :(得分:1)

我成功地使用了它。

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);
        }

答案 3 :(得分:1)

以下代码适用于我的应用程序:

   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);
                    }

答案 4 :(得分:0)

您需要先切换到包含在

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

之后,您可以使用JavascriptExecutor执行幻灯片:

((JavascriptExecutor) driver).executeScript("document.getElementsByTagName('span')[0].style.left='50%'"); // 50% or whatever you like to provide.

答案 5 :(得分:0)

只需在25

中添加一个减号
org.openqa.selenium.interactions.Action action  = move.dragAndDropBy(slider, ((width*-25)/100), 0).build();
  • 正值显示在右侧
  • 负值显示在左侧

同样适用于滚动页面。

也只是给你一张纸条。由于我想要移动的宽度为十进制数量,因此我遇到了一些问题。我建议实际上为滑块设置属性DOM值

答案 6 :(得分:0)

以下代码适用于带有两个滑块的滑块:

    WebElement sliderA = driver.findElement(By.xpath("Left slider xpath"));
    Actions move = new Actions(driver);
    move.dragAndDropBy(sliderA,10, 0).click();
    move.build().perform();


    WebElement sliderB = driver.findElement(By.xpath("Right slider xpath"));

    move.dragAndDropBy(sliderB, -50, 0).click();
    move.build().perform();

答案 7 :(得分:-1)

 }
    WebElement sliderLeftHandle = getDriver().findElement(By.cssSelector("div.rc-slider-handle-1"));
    WebElement sliderRightHandle = getDriver().findElement(By.cssSelector("div.rc-slider-handle-2"));
    int i;
    int j;
    for (i = 18; i < minAge; i++) {
        sliderLeftHandle.sendKeys(Keys.ARROW_RIGHT);
    }
    for (j = 100; j > maxAge; j--) {
        sliderRightHandle.sendKeys(Keys.ARROW_LEFT);
    }