Action类不适用于selenium 3.5.3

时间:2017-08-28 04:41:03

标签: java selenium xpath selenium-webdriver

我想将元素从一个地方拖放到另一个地方。所以,我正在使用动作类来实现我的功能。

问题是我的代码执行成功,没有显示任何错误,但功能目标无法实现。

我在firefox和chrome浏览器中尝试了相同的代码,但同样的问题在两个浏览器中都得到了复制。

以下是网站url

我试过的代码:

driver.get("http://www.seleniumeasy.com/test/drag-and-drop-demo.html");
driver.manage().window().maximize();

driver.findElement(By.xpath("//div[@id='todrag']//span[contains(text(), 'Draggable 1')]"));
driver.findElement(By.xpath("//div[@id='todrag']//span[contains(text(), 'Draggable 2')]"));
driver.findElement(By.xpath("//div[@id='todrag']//span[contains(text(), 'Draggable 3')]"));
driver.findElement(By.xpath("//div[@id='todrag']//span[contains(text(), 'Draggable 4')]"));

WebElement to = driver.findElement(By.xpath("//div[@class='w50 moveleft']//div[@id='mydropzone']"));
String[] array_drag = new String[] {"Draggable 1", "Draggable 2", "Draggable 3", "Draggable 4"};

for(int i=0; i<array_drag.length; i++)
{
    WebElement from = driver.findElement(By.xpath("//div[@id='todrag']//span[contains(text(), '"+array_drag[i]+"')]"));
    Actions act = new Actions(driver);
    act.clickAndHold(from).build().perform();
    Thread.sleep(2500);
    act.clickAndHold().moveToElement(to).release(to).build().perform();
    Thread.sleep(2500);         
}

我也尝试了这个答案,但复制了同样的问题。

Actions act = new Actions(driver);
act.moveToElement(from).moveToElement(to).build().perform();

您也可以看到下面附带的图像,代码执行成功,没有显示任何错误。

enter image description here

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

我们也可以这样尝试

Action dragAndDrop = builder.clickAndHold(src)
        .moveToElement(trg)
        .release(trg)
        .build();  
        dragAndDrop.perform();

答案 1 :(得分:0)

                    Actions builder=new Actions(driver);
                    builder.clickAndHold(weDragFrom).build().perform();
                    Thread.sleep(5000);
                    builder.click(weDragTo).build().perform();
                    builder.release(weDragTo).build().perform();

` 不幸的是,这对我来说只适用于chrome,但不适用于Firefox或IE11。我仍在寻找使这项工作的解决方案。当你说代码运行没有任何错误也没有做任何事情时尝试了一切