seleniumwebdriver在左侧移动滑块

我想移动滑块左侧的滑块。 但是,seleniumwebdriver将它移动到右侧,但它不会移动到左侧。 我想将滑块移动到滑块总宽度的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"); } } 

我总是使用此代码移动滑动条:

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

好吧,我无法使用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"); } 

我成功地使用了它。

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

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

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

你需要先切换到ie中包含的iframe

  

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

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

只需在25处添加一个减号

 org.openqa.selenium.interactions.Action action = move.dragAndDropBy(slider, ((width*-25)/100), 0).build(); 
  • 正值出现在右边
  • 负值出现在左侧

这同样适用于滚动页面。

也只是给你一张纸条。 我有这个方法的一些问题,因为我想要移动的宽度是十进制数量。 我建议实际上为滑块设置属性DOM值