【问题标题】:unable to drag and drop an webelement using selenium(java)无法使用 selenium(java) 拖放 web 元素
【发布时间】:2021-04-09 03:49:49
【问题描述】:

我正在尝试将一个元素(//li[text()='Rel_ME_Hotfix'])拖到目标 web 元素(//div[@id='dropEventDataId0'])中。下面是我试过的代码。

Actions act=new Actions(driver);
WebElement source=driver.findElement(By.xpath("//li[text()=' Rel_ME_Hotfix ']"));
WebElement destination=driver.findElement(By.xpath("//div[@id='dropEventDataId0']"));       
act.clickAndHold(source).pause(2000).moveToElement(destination).release().build().perform();

也试过

Actions action = new Actions(driver);
WebElement From = driver.findElement(from);
WebElement To = driver.findElement(to);
action.dragAndDrop(From,To).build().perform();

尝试将目标 web 元素设置为 //div[@id='masterOptionDiv'] 但没有运气。

脚本只是运行,但元素没有被放入目标 web 元素。附上html代码供参考。

【问题讨论】:

    标签: selenium-webdriver drag-and-drop


    【解决方案1】:

    这是通过使用 javascript 拖放来实现的。

    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, destination);   }
    

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 2020-03-16
      • 2020-03-20
      • 2015-05-02
      • 1970-01-01
      • 2019-09-22
      • 2021-11-28
      • 2020-08-28
      相关资源
      最近更新 更多