selenium webdriver 在左侧移动滑块
selenium webdriver move slider on left side
我想移动滑块左侧的滑块。但是,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");
}
}
好吧,我无法通过 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");
}
您需要先切换到它包含的 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.
我总是使用这段代码来移动滑动条:
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);
}
我已经成功地使用了它。
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);
}
只需在 25 上加一个负号
org.openqa.selenium.interactions.Action action = move.dragAndDropBy(slider, ((width*-25)/100), 0).build();
- 正值向右移动
- 负值向左移动
同样适用于滚动页面。
也只是给你的便条。由于我想移动的宽度是小数,因此我在使用这种方法时遇到了一些问题。我建议实际上为滑块设置属性 DOM 值
以下代码适用于我的应用程序:
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);
}
以下代码适用于带有两个滑块的滑动条:
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();
我想移动滑块左侧的滑块。但是,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");
}
}
好吧,我无法通过 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");
}
您需要先切换到它包含的 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.
我总是使用这段代码来移动滑动条:
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);
}
我已经成功地使用了它。
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);
}
只需在 25 上加一个负号
org.openqa.selenium.interactions.Action action = move.dragAndDropBy(slider, ((width*-25)/100), 0).build();
- 正值向右移动
- 负值向左移动
同样适用于滚动页面。
也只是给你的便条。由于我想移动的宽度是小数,因此我在使用这种方法时遇到了一些问题。我建议实际上为滑块设置属性 DOM 值
以下代码适用于我的应用程序:
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);
}
以下代码适用于带有两个滑块的滑动条:
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();