使用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的新手并尝试着它。请帮忙。提前谢谢。
答案 0 :(得分:0)
如果您想将滑块移回,则应使用以下代码:
actions.clickAndHold(element).moveByOffset(-i,0).release().build().perform();
在你的第二个。
答案 1 :(得分:0)
问题可能是你在第二个for循环中有.release()吗?循环将正确倒计时我认为基于偏移方法,但我认为释放方法调用可能导致Action释放拖动