首页 > 解决方案 > 硒拖放方法在chrome浏览器上不起作用

问题描述

从 selenium IDE 导出的全功能拖放方法无法正常工作webDriver

webDriver 上的测试通过而没有执行任何操作。chrome 的版本是75.0.3770.100. selenium webDriver 的版本是 3.141.59。selenium IDE 是一个 chrome 扩展。该应用程序是HTML5 reactJS

    public void dragAndDrop(By by1, By by2) {
            WebElement from = driver.findElement(by1);
            WebElement to = driver.findElement(by2);
            Actions actions = new Actions(driver);
           actions.dragAndDrop(from,to).perform();
        }

执行-

    dragAndDrop(By.cssSelector(".py-1:nth-child(3)"), By.cssSelector(".jss11amios > div"));

标签: selenium-webdriver

解决方案


找到了解决方案-

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

推荐阅读