Guest User

Untitled

a guest
Oct 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. import org.openqa.selenium.By;
  2. import org.openqa.selenium.JavascriptExecutor;
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.WebElement;
  5. import org.openqa.selenium.chrome.ChromeDriver;
  6. import org.openqa.selenium.interactions.Actions;
  7.  
  8. public class Playground
  9. {
  10. public static void main(String[] args)
  11. {
  12. WebDriver driver = new ChromeDriver();
  13. driver.get("https://smnbbrv.github.io/angular-sortablejs-demo/multiple-lists");
  14.  
  15. WebElement draggable = driver.findElement(By.xpath("/html/body/app-root/div/app-multiple-lists/div[1]/div[1]/ul/li[2]"));
  16. WebElement dropable = driver.findElement(By.xpath("/html/body/app-root/div/app-multiple-lists/div[1]/div[2]"));
  17.  
  18. // DRAW BORDERS AROUND TO MAKE SURE WE SELECT CORRECT OBJECTS
  19. drawBorder(driver, "/html/body/app-root/div/app-multiple-lists/div[1]/div[1]/ul/li[2]");
  20. drawBorder(driver, "/html/body/app-root/div/app-multiple-lists/div[1]/div[2]");
  21.  
  22. // TRY USING SELENIUMS ACTION CLASS
  23. Actions actions = new Actions(driver);
  24. actions.clickAndHold(draggable).moveToElement(dropable).release().build().perform();
  25.  
  26. // TRY AGAIN USING JAVA SCRIPT
  27. dragAndDrop(driver, draggable, dropable);
  28. }
  29.  
  30. public static void drawBorder(WebDriver driver, String xpath)
  31. {
  32. WebElement element_node = driver.findElement(By.xpath(xpath));
  33. JavascriptExecutor jse = (JavascriptExecutor) driver;
  34. jse.executeScript("arguments[0].style.border='3px solid red'", element_node);
  35. }
  36.  
  37. public static void dragAndDrop(WebDriver driver, WebElement from, WebElement to)
  38. {
  39. JavascriptExecutor js = (JavascriptExecutor) driver;
  40.  
  41. js.executeScript("function createEvent(typeOfEvent) {n" + "var event =document.createEvent("CustomEvent");n"
  42. + "event.initCustomEvent(typeOfEvent,true, true, null);n" + "event.dataTransfer = {n" + "data: {},n"
  43. + "setData: function (key, value) {n" + "this.data[key] = value;n" + "},n"
  44. + "getData: function (key) {n" + "return this.data[key];n" + "}n" + "};n" + "return event;n"
  45. + "}n" + "n" + "function dispatchEvent(element, event,transferData) {n"
  46. + "if (transferData !== undefined) {n" + "event.dataTransfer = transferData;n" + "}n"
  47. + "if (element.dispatchEvent) {n" + "element.dispatchEvent(event);n"
  48. + "} else if (element.fireEvent) {n" + "element.fireEvent("on" + event.type, event);n" + "}n"
  49. + "}n" + "n" + "function simulateHTML5DragAndDrop(element, destination) {n"
  50. + "var dragStartEvent =createEvent('dragstart');n" + "dispatchEvent(element, dragStartEvent);n"
  51. + "var dropEvent = createEvent('drop');n"
  52. + "dispatchEvent(destination, dropEvent,dragStartEvent.dataTransfer);n"
  53. + "var dragEndEvent = createEvent('dragend');n"
  54. + "dispatchEvent(element, dragEndEvent,dropEvent.dataTransfer);n" + "}n" + "n"
  55. + "var source = arguments[0];n" + "var destination = arguments[1];n"
  56. + "simulateHTML5DragAndDrop(source,destination);", from, to);
  57. }
  58. }
Add Comment
Please, Sign In to add comment