【问题标题】:selenium webdriver move slider on left sideselenium webdriver 在左侧移动滑块
【发布时间】:2015-02-11 11:30:18
【问题描述】:

我想移动滑块左侧的滑块。但是,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");
}
}

【问题讨论】:

  • 你试过带滑块的例子吗?
  • 它可以工作,但根据我传递的参数将滑块移动到右侧,它必须位于滑块栏的左侧
  • 窗口最大化,元素正确定位???你可以将左滑块的定位器更改为特定的???
  • 是的,元素位置正确,我也尝试了特定的位置值,但没有运气。
  • 你是否使用浏览器中的定位器 -> 检查元素?

标签: java selenium-webdriver testng


【解决方案1】:

我总是使用这段代码来移动滑动条:

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

【讨论】:

    【解决方案2】:

    好吧,我无法通过使用 dragAndDropBy 和 clickAndHold 的所有可能选项来移动滑块。但是,使用下面的 sn-p 我能够将滑块移动到滑块的确切位置。我仍然想知道上面的代码有什么问题,它没有像我预期的那样将滑块移动到确切的位置。

    您可以设置 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");
    }
    

    【讨论】:

      【解决方案3】:

      我已经成功地使用了它。

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

      【讨论】:

        【解决方案4】:

        只需在 25 上加一个减号

        org.openqa.selenium.interactions.Action action  = move.dragAndDropBy(slider, ((width*-25)/100), 0).build();
        
        • 正值向右移动
        • 负值向左移动

        这同样适用于滚动页面。

        也只是给你的一个便条。由于我想移动的宽度是小数,我对这种方法有一些问题。我建议实际上为滑块设置属性 DOM 值

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            你需要先切换到它所在的 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.
            

            【讨论】:

            • @Karim Narsindani 这有帮助吗?
            【解决方案7】:

            以下代码适用于带有两个滑块的滑动条:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-10-11
              • 2020-04-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多