Selenium:moveByOffset()不起作用

时间:2017-11-03 09:01:31

标签: java selenium

使用moveByOffset()方法解决问题。

link上我可以将滑块移到右侧,但是当我试图将其向左移动时它只是不移动。如果moveByOffset()方法存在问题或者我应该使用任何其他方法,请告诉我。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class JquerySlider {

public static void main(String[] args) throws InterruptedException {
    // TODO Auto-generated method stub
    WebDriver driver=null;
    try {

        System.setProperty("webdriver.chrome.driver","C:\\chromedriver\\chromedriver.exe");

        driver = new ChromeDriver();

        driver.get("https://jqueryui.com");

        driver.manage().window().maximize();

        driver.findElement(By.xpath("//a[text()='Slider']")).click();

        Actions actions = new Actions(driver);

        driver.switchTo().frame(0);

        WebElement element = driver.findElement(By.xpath("//div[@id='slider']/span"));

            for (int i = 1; i <=10; i++) {
                System.out.println(i);
                actions.clickAndHold(element).moveByOffset(i, 0).build().perform();
            }

            //WebElement element2 = driver.findElement(By.xpath("//div[@id='slider']/span"));

            /*for (int i = 10; i > 0; i--) {
                System.out.println("For 2 "+i);
                actions.clickAndHold(element).moveByOffset(0,0).release().build().perform();
            }*/ This part is not working...

    } catch (Exception e) {
        // TODO: handle exception
        System.err.println(e.getMessage());
    }finally{
        Thread.sleep(5000);
        driver.close();

    }


}

}

我是Selenium的新手并尝试着它。请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果您想将滑块移回,则应使用以下代码:

actions.clickAndHold(element).moveByOffset(-i,0).release().build().perform();

在你的第二个。

答案 1 :(得分:0)

问题可能是你在第二个for循环中有.release()吗?循环将正确倒计时我认为基于偏移方法,但我认为释放方法调用可能导致Action释放拖动

相关问题