简体   繁体   English

拖放在 selenium java 中不起作用

[英]Drag and drop is not working in selenium java

I am learning selenium java automation.我正在学习 selenium java 自动化。 I am trying to automate https://the-internet.herokuapp.com/drag_and_drop .我正在尝试自动化https://the-internet.herokuapp.com/drag_and_drop Why my below code is not working?为什么我下面的代码不起作用?

public class DragandDrop {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.setProperty("webdriver.chrome.driver","/Users/Sudharsna.a.kumar/Drivers/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://the-internet.herokuapp.com/");
        driver.findElement(By.xpath("//ul/li/a[contains(text(),'Drag and Drop')]")).click();
        Actions action = new Actions(driver);
        WebElement source = driver.findElement(By.id("column-a"));
        WebElement target = driver.findElement(By.id("column-b"));
        action.dragAndDrop(source,target).perform();
        String textTo = target.getText();
        if(textTo.equals("Dropped!")) {
            System.out.println("PASS: File is dropped to target as expected");
        }else {
        System.out.println("FAIL: File couldn't be dropped to target as expected");
        }
    }
}

The web is using HTML5 and most of the time I have seen action method dragAndDrop does not work there.网络使用的是HTML5 ,大多数时候我看到操作方法dragAndDrop在那里不起作用。 You can use the javaScriptExecutor like below.您可以使用javaScriptExecutor ,如下所示。

Also I can not see the " Dropped " text in the given web element.我也看不到给定 Web 元素中的“ Dropped ”文本。 It's either " A " or " B ", so correct the if condition as well.它是“ A ”或“ B ”,因此也要更正 if 条件。

import org.openqa.selenium.JavascriptExecutor


JavascriptExecutor js = (JavascriptExecutor)driver
js.executeScript("function createEvent(typeOfEvent) {\n" + "var event =document.createEvent(\"CustomEvent\");\n"
                    + "event.initCustomEvent(typeOfEvent,true, true, null);\n" + "event.dataTransfer = {\n" + "data: {},\n"
                    + "setData: function (key, value) {\n" + "this.data[key] = value;\n" + "},\n"
                    + "getData: function (key) {\n" + "return this.data[key];\n" + "}\n" + "};\n" + "return event;\n"
                    + "}\n" + "\n" + "function dispatchEvent(element, event,transferData) {\n"
                    + "if (transferData !== undefined) {\n" + "event.dataTransfer = transferData;\n" + "}\n"
                    + "if (element.dispatchEvent) {\n" + "element.dispatchEvent(event);\n"
                    + "} else if (element.fireEvent) {\n" + "element.fireEvent(\"on\" + event.type, event);\n" + "}\n"
                    + "}\n" + "\n" + "function simulateHTML5DragAndDrop(element, destination) {\n"
                    + "var dragStartEvent =createEvent('dragstart');\n" + "dispatchEvent(element, dragStartEvent);\n"
                    + "var dropEvent = createEvent('drop');\n"
                    + "dispatchEvent(destination, dropEvent,dragStartEvent.dataTransfer);\n"
                    + "var dragEndEvent = createEvent('dragend');\n"
                    + "dispatchEvent(element, dragEndEvent,dropEvent.dataTransfer);\n" + "}\n" + "\n"
                    + "var source = arguments[0];\n" + "var destination = arguments[1];\n"
                    + "simulateHTML5DragAndDrop(source,destination);", source, target)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM