使用Webdriver java在Sliders中拖放

时间:2017-06-13 04:56:20

标签: java jquery selenium selenium-webdriver automated-tests

在网站“http://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html”中存在一个滑块。默认情况下,第一个滑块值为10.我试图自动将滑块移动到20的值。但是无法执行相同的操作。 。我使用了以下代码

String emailAddress = RegEmailId.getText().toString().trim();

if (RegPassword.getText().toString().length() < 6) {
RegPassword.setError(getString("password minimum contain 6 character"));
RegPassword.requestFocus();
}

if (RegPassword.getText().toString().equals("")) {
RegPassword.setError(getString("please enter password"));
RegPassword.requestFocus();
}

if (RegPhoneNo.getText().toString().equals("")) {
RegPhoneNo.setError(getString("please enter password"));
RegPhoneNo.requestFocus();
}

if (!android.util.Patterns.EMAIL_ADDRESS.matcher(emailAddress).matches()) {
RegEmailId.setError(getString("please enter valid email address"));
RegEmailId.requestFocus();
}

if (RegEmailId.getText().toString().equals("")) {
RegEmailId.setError(getString("please enter email address"));
RegEmailId.requestFocus();
}

if (!emailAddress.equals("") &&
RegPassword.getText().toString().length() >= 6 &&
!RegPassword.getText().toString().trim().equals("")
&& android.util.Patterns.EMAIL_ADDRESS.matcher(emailAddress).matches()  &&
!RegPhoneNo.getText().toString().equals("")&&
 RegPhoneNo.getText().toString().length()>=10)   {
// do  your action
}

请在下面找到滑块和滑块图片的HTML代码。请帮助自动化滑块。

WebElement sliderOne = driver.findElement(By.xpath("//*[@class='range']/output"));
        System.out.println(sliderOne.getAttribute("value"));
        Actions action = new Actions(driver);
        action.clickAndHold(sliderOne);
        action.moveByOffset(20, 0).release().build().perform();
enter image description here

3 个答案:

答案 0 :(得分:0)

滑块位于<input>标记中,而不是<output>标记中。 <output>标记只是值。

WebElement sliderOne = driver.findElement(By.xpath("//*[@class='range']/input"));

答案 1 :(得分:0)

您可以使用以下代码将滑块移动到值20:

public static void main(String[] args) throws Exception {

    System.setProperty("webdriver.chrome.driver", "D:/Selenium/Drivers/chromedriver.exe");
    WebDriver driver = new ChromeDriver(); 
    driver.manage().window().maximize();
    driver.get("http://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html");
    Thread.sleep(1000);
    WebElement sl = driver.findElement(By.xpath(".//*[@id='slider1']/div/input"));
    //Using Action Class
    Actions move = new Actions(driver);
    Action action = move.dragAndDropBy(sl, -79, 0).build();
    action.perform();

}

我测试了它并且它正在工作。 希望它会对你有所帮助。

答案 2 :(得分:0)

这是设置确切滑块值的代码。

System.setProperty("webdriver.chrome.driver","//path to driver");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html");

WebElement eleSlider1=driver.findElement(By.cssSelector("[name='range']"));
int valueToBeset=40;
valueToBeset=(valueToBeset>1&&valueToBeset<30)?valueToBeset+1:valueToBeset;
int eleSlider1Width=eleSlider1.getSize().getWidth();
int pixelValue=(eleSlider1Width)*valueToBeset/100;       
new Actions(driver).moveToElement(eleSlider1,pixelValue, 0).click().build().perform();