簡體   English   中英

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

我總是使用此代碼來移動滑動條:

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

只需在 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);
                    }

您需要先切換到它包含在 ie 中的 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.

以下代碼適用於帶有兩個滑塊的滑動條:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM