2017-06-13 4 views
0

ウェブサイトに "http://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html"というスライダがあります。デフォルトでは最初のスライダの値は10です。スライダを20の値に移動する機能を自動化しようとしていましたが、同じことを実行する。私は以下のコードを使用しましたWebdriverを使用してスライダでドラッグアンドドロップする

WebElement sliderOne = driver.findElement(By.xpath("//*[@class='range']/output")); 
     System.out.println(sliderOne.getAttribute("value")); 
     Actions action = new Actions(driver); 
     action.clickAndHold(sliderOne); 
     action.moveByOffset(20, 0).release().build().perform(); 

スライダーのスライダーとイメージについては、以下のHTMLコードを参照してください。親切にスライダーの自動化に役立ちます。

<div class="range"> 
 
      <input type="range" name="range" min="1" max="100" value="10" onchange="range.value=value"> 
 
      <output id="range">10</output> 
 
      </div>
enter image description here

答えて

0

スライダーは<input>タグ、ない<output>タグです。 <output>タグは単なる値です。

WebElement sliderOne = driver.findElement(By.xpath("//*[@class='range']/input")); 
+0

入力タグを与えて、 'action.moveByOffset(20、0).release()。build()。perform();'スライダーは61に移動します。どのようにしてスライダーが20に移動するようにオフセットを設定できますか? – Dinu

+0

@Dinu「clickAndHold」は要素の途中で実行されます。 20に移動するには負のオフセットを与える必要があります(約-100)。 'sliderOne.getSize()。width'プロパティを使って一般的な公式を工夫することができます。 – Guy

+0

以下のコードを使用して20に移動することができましたが、オフセット値の計算方法を説明したり、考えてください。 – Dinu

0

あなたは20を評価するために、スライダを移動するには、次のコードを使用することができます。

public static void main(String[] args) throws Exception { 

    System.setProperty("webdriver.chrome.driver", "D:/Selenium/Drivers/chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.manage().window().maximize(); 
    driver.get("http://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html"); 
    Thread.sleep(1000); 
    WebElement sl = driver.findElement(By.xpath(".//*[@id='slider1']/div/input")); 
    //Using Action Class 
    Actions move = new Actions(driver); 
    Action action = move.dragAndDropBy(sl, -79, 0).build(); 
    action.perform(); 

} 

私はそれをテストしてきたし、それが働いています。 それがあなたを助けてくれることを願っています。

0

これは、正確なスライダの値を設定するコードです。

System.setProperty("webdriver.chrome.driver","//path to driver"); 
WebDriver driver = new ChromeDriver(); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.get("http://www.seleniumeasy.com/test/drag-drop-range-sliders-demo.html"); 

WebElement eleSlider1=driver.findElement(By.cssSelector("[name='range']")); 
int valueToBeset=40; 
valueToBeset=(valueToBeset>1&&valueToBeset<30)?valueToBeset+1:valueToBeset; 
int eleSlider1Width=eleSlider1.getSize().getWidth(); 
int pixelValue=(eleSlider1Width)*valueToBeset/100;  
new Actions(driver).moveToElement(eleSlider1,pixelValue, 0).click().build().perform(); 
関連する問題