Selenium Automation拖放功能问题

时间:2015-04-09 11:03:16

标签: selenium-webdriver drag-and-drop automation

我正在尝试拖放一个元素,但我无法在所需位置释放该元素。

问题是:我想将元素放在仅在运行时可见的占位符中(即:当我clickAndHold元素并移动到目标元素时) 移动到目标元素后,占位符被激活,我应该释放该元素。

这是我的代码:(在FirefoxDriver初始化之后)

    String  sourceelement ="#ctl00_ctl44_g_0beb5998_7319_49ac_9956_28684e341659_dvCart img";
    String destinationelement = "#dvZone_LeftColumn";
    Actions builder = new Actions(driver);
    builder.clickAndHold(driver.findElement(By.cssSelector(sourceelement)));
    builder.moveToElement(driver.findElement(By.cssSelector(destinationelement)));
    builder.perform();
    Thread.sleep(250);

    WebElement holder = driver.findElement(By.className("placeholder"));
    builder.release(holder).perform();

这是HTML源代码段(发布元素部分):

                 

“”在任何“”下激活,具体取决于我拖动后该元素的位置。

问题:

1 - 在执行脚本时,如果我移动鼠标而不是在占位符中释放元素那么成功执行(但必须在那时移动鼠标以释放占位符中的元素,这不应该在自动化中完成)< / p>

2 - 如果我不移动鼠标,则脚本无法说“找不到带有classname = placeholder的元素”

请帮忙

提前致谢

1 个答案:

答案 0 :(得分:0)

只有在按住target并移动鼠标时,您的source占位符才会生效。

我建议您首先单击并按住source元素并将其移动一定的偏移量,这将使您的目标占位符可见。通过这种方式,您可以确保您没有&#34;无法找到classname =占位符&#34; 错误的元素。

        String  sourceelement ="#ctl00_ctl44_g_0beb5998_7319_49ac_9956_28684e341659_dvCart img";
        String destinationelement = "#dvZone_LeftColumn";
        Actions builder = new Actions(_driver);
        builder.clickAndHold(_driver.findElement(By.cssSelector(sourceelement)));

        builder.moveByOffset(1, 1).perform();// this will move the mouse by 1,1 which will be holding your source element

        builder.moveToElement(_driver.findElement(By.cssSelector(destinationelement)));
        builder.perform();
        Thread.sleep(250);


        WebElement holder = _driver.findElement(By.className("placeholder"));
        builder.release(holder).perform();