From 2ea0dc239b4603f4bedc5e2635db7c4d13839f62 Mon Sep 17 00:00:00 2001 From: Guillem Hernandez Sola Date: Mon, 20 Apr 2026 13:23:34 +0200 Subject: [PATCH] Added all --- .../webdriver/DragAndDropJavascriptTest.java | 48 +++++++++++++++++++ .../testng/webdriver/DragAndDropTest.java | 42 ++++++++-------- 2 files changed, 67 insertions(+), 23 deletions(-) create mode 100644 src/test/java/com/agile611/testng/webdriver/DragAndDropJavascriptTest.java diff --git a/src/test/java/com/agile611/testng/webdriver/DragAndDropJavascriptTest.java b/src/test/java/com/agile611/testng/webdriver/DragAndDropJavascriptTest.java new file mode 100644 index 0000000..2a7645c --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DragAndDropJavascriptTest.java @@ -0,0 +1,48 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebElement; +import static org.testng.Assert.assertEquals; +import org.testng.annotations.Test; + +public class DragAndDropJavascriptTest extends BaseTest { + @Test + public void testAppConJS() throws InterruptedException { + driver.navigate().to("https://the-internet.herokuapp.com/drag_and_drop"); + Thread.sleep(2000); + + WebElement columnA = driver.findElement(By.id("column-a")); + WebElement columnB = driver.findElement(By.id("column-b")); + + // Script JS que simula los eventos HTML5 drag & drop correctamente + String script = + "function simulateDragDrop(sourceNode, destinationNode) {" + + " var EVENT_TYPES = ['dragstart','dragenter','dragover','drop','dragend'];" + + " function createEvent(eventType) {" + + " var event = document.createEvent('CustomEvent');" + + " event.initCustomEvent(eventType, true, true, null);" + + " event.dataTransfer = { data: {}, setData: function(type, val) { this.data[type]=val; }, getData: function(type) { return this.data[type]; } };" + + " return event;" + + " }" + + " var dragEvent = createEvent('dragstart');" + + " sourceNode.dispatchEvent(dragEvent);" + + " destinationNode.dispatchEvent(createEvent('dragenter'));" + + " destinationNode.dispatchEvent(createEvent('dragover'));" + + " var dropEvent = createEvent('drop');" + + " dropEvent.dataTransfer = dragEvent.dataTransfer;" + + " destinationNode.dispatchEvent(dropEvent);" + + " sourceNode.dispatchEvent(createEvent('dragend'));" + + "}" + + "simulateDragDrop(arguments[0], arguments[1]);"; + + ((JavascriptExecutor) driver).executeScript(script, columnA, columnB); + Thread.sleep(2000); + + // Verificar el intercambio + assertEquals(driver.findElement(By.cssSelector("#column-a header")).getText(), "B"); + assertEquals(driver.findElement(By.cssSelector("#column-b header")).getText(), "A"); + } +} + + diff --git a/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java b/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java index 573407a..47d6cde 100644 --- a/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java +++ b/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java @@ -3,36 +3,32 @@ package com.agile611.testng.webdriver; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; +import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; public class DragAndDropTest extends BaseTest { @Test public void testApp() throws InterruptedException { - driver.navigate().to("http://compendiumdev.co.uk/selenium/testpages/gui_user_interactions.html"); - WebElement draggable1 = driver.findElement(By.xpath(".//*[@class='draganddrops']/div/div[1]")); - WebElement draggable2 = driver.findElement(By.id("draggable2")); - WebElement droppable1 = driver.findElement(By.id("droppable1")); - WebElement droppable2 = driver.findElement(By.id("droppable2")); + driver.navigate().to("https://the-internet.herokuapp.com/drag_and_drop"); + Thread.sleep(2000); + + // Localizar los dos elementos con sus IDs reales + WebElement columnA = driver.findElement(By.id("column-a")); + WebElement columnB = driver.findElement(By.id("column-b")); + + // Verificar estado inicial: A está a la izquierda, B a la derecha + assertEquals(columnA.findElement(By.tagName("header")).getText(), "A"); + assertEquals(columnB.findElement(By.tagName("header")).getText(), "B"); + + // Arrastrar A sobre B (intercambiar posiciones) Actions dragAndDrop = new Actions(driver); - dragAndDrop.dragAndDrop(draggable1, droppable1).perform(); - Thread.sleep(4000); - dragAndDrop.dragAndDrop(draggable2, droppable2).perform(); - Thread.sleep(4000); + dragAndDrop.dragAndDrop(columnA, columnB).perform(); + Thread.sleep(2000); - - /* - dragAndDrop - .clickAndHold(draggable2) - .moveToElement(droppable1) - .release().build().perform(); - Thread.sleep(4000); - dragAndDrop - .clickAndHold(draggable2) - .moveToElement(droppable2) - .release().build().perform(); - Thread.sleep(4000); - */ + // Verificar que han intercambiado: ahora A está donde estaba B y viceversa + assertEquals(columnA.findElement(By.tagName("header")).getText(), "B"); + assertEquals(columnB.findElement(By.tagName("header")).getText(), "A"); } -} \ No newline at end of file +}