使用Java和Firefox在Selenium Webdriver中移动滑块

时间:2013-07-09 11:57:42

标签: java firefox selenium slider webdriver

使用Selenium Webdriver(版本2.32.0)和Firefox(21.0)时遇到问题,尝试更改滑块上的值。

我写了这样的Java代码:

private void selectGiftCardPrice() throws TestingException {
        try {
            WebElement slider = getDriver().findElement(
                    By.cssSelector("div.sliderHandle"));
            Actions move = new Actions(getDriver());
            move.dragAndDropBy(slider, 90, 0);
            move.build().perform();
            sleep(4000);
        } catch (Exception e) {
            log.info(e);
            throw new TestingException("e");
        }

我尝试了我在网上找到的每一个代码,每一次更改,它仍然无效。它没有显示任何问题,只是找到元素,什么都不做。知道它是什么,或者我能做什么?

来自评论的编辑:

我终于使用了jQuery slider demo

driver.get("http://jqueryui.com/resources/demos/slider/multiple-vertical.html");
WebElement slider = driver.findElement(By.xpath("//div[1]/a[contains(@class,'ui-slider-handle')]"));‌

但是jQuery UI Slider demo page使用Xpath //div[@id='slider']/a仍然无效。有什么问题?

2 个答案:

答案 0 :(得分:1)

这段代码对我来说绝对合适。 程序处理网站的滑块:Homeshope18.com 看看:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.homeshop18.com/fashion-jewellery/category:15143/filter_Theme:%28%22Traditional+Wear%22+%22Cuff+%26+Kada%22+%22Daily+Wear%22+%22Maang+Tikka%22+%22Openable+Round%22+%22Round%22+%22Openable+Oval%22%29/sort:Popularity/inStock:true/?it_category=HP&it_action=JW-HPSP01&it_label=HP-HPSP01-131021235900-PD-JW-ZC-VK-SC_DiwaliFestWeddingJewellery&it_value=0");

WebElement slider = driver.findElement(By.xpath("//*[@id='slider-range']/a[1]"));
Thread.sleep(3000);

Actions moveSlider = new Actions(driver);
Action action = moveSlider.dragAndDropBy(slider, 30, 0).build();

action.perform();

答案 1 :(得分:0)

使用Actions类,第一个使用clickAndHold("WebElemnt");

然后为了水平移动,我们需要在屏幕的Y方向上移动,这样我们就可以使用movebyoffset,即X轴:0& Y轴:40px

要垂直移动,我们需要在屏幕的X方向上移动,以便我们可以使用movebyoffset,即X轴:40px& Y轴:0

示例代码为:

Actions slider=new Actions(driver);
slider.clickAndHold("WebElemnt");
slider.movebyoffset(0,40).build.perform();