无法使用Selenium-Webdriver将元素拖放到另一个元素

时间:2016-06-13 11:34:56

标签: selenium-webdriver drag-and-drop

我正在为以下拖放功能编写演示测试。[参考附件截图] 为此,我写了以下代码:

 @Test
    public void DragAndDropTest() {  
      commonSteps();
      WebElement drag = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[1]/div/div[1]"));
      WebElement drop = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[2]/div/div[1]"));
      Actions builder = new Actions(driver);
      Action dragAndDrop = builder.clickAndHold(drag).moveToElement(drop).release(drop).build();
      dragAndDrop.perform();
  }

Webelement drag是针对“Right Now”& WebElement drop用于“快速按下”。

我的代码能够找到这些元素,但不会将“立即生效”框架拖放到“快速按下”框架。

此外,我尝试点击拖动,但点击也无法正常工作。我认为这些是JQuery的可折叠拖放面板。那么如何使用webdriver处理可折叠的拖放。

我应该在代码中做出哪些改变才能实现这一目标?

enter image description here

3 个答案:

答案 0 :(得分:2)

    Actions builder = new Actions(driver);
    builder.clickAndHold(drag).moveToElement(drop).build();
    builder.dragAndDrop(drag, drop).perform();

这对我有用。

答案 1 :(得分:0)

我们可以直接使用操作来拖放,而不是点击并按住。

在Java中,

            WebElement drag = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[1]/div/div[1]"));
      WebElement drop = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[2]/div/div[1]"));
      Actions builder = new Actions(driver);
      builder.dragAndDrop(drag, drop).build().perform();

      //or we can drop by x and y coordinates 

      builder.dragAndDropBy(drag, 20, 0).build().perform();

答案 2 :(得分:0)

请在下面试试,

使用键盘操作:

Actions builder = new Actions(driver);
builder.keyDown(Keys.CONTROL).click(someElement).click(someOtherElement). keyUp(Keys.CONTROL).build().perform();

使用鼠标操作:

Actions builder = new Actions(driver);
builder.clickAndHold(someElement).moveToElement(otherElement).release( otherElement).build().perform();