簡體   English   中英

Selenium 拖放問題

[英]Selenium drag and drop issue

我需要在我的網站上進行拖放操作。我已成功拖放我的元素,但我在放下我的元素時遇到了困難。

@Test (priority=8)
 public void openSectionArrow() throws InterruptedException {
          Thread.sleep(3000);
          driver.findElement(By.xpath("//*[@id=\"section-sortable\"]/div/div[1]/div[1]/span/a")).click();
          System.out.println("click on section arrow");
 }
    @Test (priority=8)
    public void dragDrop() throws InterruptedException {
          WebElement srcElement = driver.findElement(By.xpath("/html/body/app-root/app-wrapper/app-template-manager/div/main/div/app-home/div/div/div[2]/div/div[3]/div/div[1]/div[2]/div/div/div/div[1]/div/div[1]"));
          WebElement targetElement = driver.findElement(By.xpath("/html/body/app-root/app-wrapper/app-template-manager/div/main/div/app-home/div/div/div[2]/div/div[2]/div[2]/div[2]/div/div[1]/div/div[2]/div/div/div[1]/gridster/div[2]"));
          Actions builder = new Actions(driver);
          builder.clickAndHold(srcElement).perform(); 
          Thread.sleep(5000);
          builder.moveToElement(targetElement).release().build().perform();       
    }
   

請使用 JavascriptExecutor 嘗試使用以下代碼。

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, target) { var dragStartEvent = createEvent('dragstart'); dispatchEvent(element, dragStartEvent); var dropEvent = createEvent('drop'); dispatchEvent(target, dropEvent, dragStartEvent.dataTransfer); var dragEndEvent = createEvent('dragend'); dispatchEvent(element, dragEndEvent, dropEvent.dataTransfer); } var elementToDrag = arguments[0]; var target = arguments[1]; simulateHTML5DragAndDrop(elementToDrag, target);",
    srcElement, targetElement);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM