【问题标题】:Move slider in Selenium Webdriver with Java and Firefox使用 Java 和 Firefox 在 Selenium Webdriver 中移动滑块
【发布时间】:2013-07-09 11:57:42
【问题描述】:

我在使用 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')]"));‌

但是使用 Xpath //div[@id='slider']/ajQuery UI Slider demo page 仍然对我不起作用。有什么问题?

【问题讨论】:

  • 你试过这个:move.dragAndDropBy(slider, 90, 0).build().perform(); 吗?有几次我注意到,在使用Actions() 类时,最好尝试将所有操作保持在同一个链中。打断链条并产生“奇怪”的影响。
  • 是的,我做到了,但仍然无法正常工作,:-(.
  • 请提供一段 html。带滑块和输入
  • 我终于使它与网页 driver.get("jqueryui.com/resources/demos/slider/…); 和 WebElement slider = driver.findElement(By.xpath("//div[1]/a[ contains(@class,'ui-slider-handle')]"));,但是对于示例页面 jqueryui.com/slider 和 Xpath "//div[@id='slider']/ 仍然无法正常工作a",FireBug要么用FirePath找到Xpath,但肯定是对的。问题出在哪里?
  • 将 xpath 更正为 //div[@id='slider']/span 而不是 //div[@id='slider']/a

标签: java firefox selenium slider webdriver


【解决方案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();

【讨论】:

  • 不错。它正在工作,但我无法控制要移动的单位数量。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2014-11-29
    • 2017-04-26
    相关资源
    最近更新 更多