Использование действий позволяет выбрать элемент, но не может перетащить элемент в определенное место, потому что при наведении мыши создается функция удаления - PullRequest
4 голосов
/ 20 апреля 2020

URL - http://www.seleniumeasy.com/test/drag-and-drop-demo.html

 System.setProperty("webdriver.chrome.driver", "D:\\Eclipse\\Files\\chromedriver_win32\\chromedriver.exe");
         driver = new ChromeDriver();   
      driver.manage().window().fullscreen();
         driver.get("http://www.seleniumeasy.com/test/drag-and-drop-demo.html");        
             Thread.sleep(5000);

         WebElement itemToBeDragged = driver.findElement(By.xpath("//div[@id='todrag']//span[3]"));
         WebElement whereToBeDragged = driver.findElement(By.xpath("//div[@id='mydropzone']"));

         Thread.sleep(3000);
         Actions builder = new Actions(driver);
         builder.clickAndHold(itemToBeDragged).moveToElement(whereToBeDragged).build();
         Thread.sleep(3000);
         builder.dragAndDrop(itemToBeDragged, whereToBeDragged).perform();

Я уже попробовал свои решения, но ни одно из них не работает для меня. например, :-

  1. https://gist.github.com/rcorreia/2362544
  2. Java - перетаскивание не работает с селеном 3.8
  3. Невозможно перетащить элемент на другой элемент с помощью Selenium-Webdriver
  4. Невозможно перетащить элемент с помощью Actions

1 Ответ

3 голосов
/ 26 апреля 2020

Пробовал с большинством предложений по SO и, наконец, придумал это, я очень удивлен, потому что перетаскивание выполнимо многими способами, но ни один из них, похоже, не работал по этой конкретной ссылке. отлично работает (пробовал со всеми 4 перетаскиваемыми)

Используется класс роботов здесь

    driver.get("https://www.seleniumeasy.com/test/drag-and-drop-demo.html");

    driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);

    Point coordinates = driver.findElement(By.xpath("//div[@id='todrag']//span[3]")).getLocation();
    Point coordinatesa = driver.findElement(By.xpath("//*[@id='mydropzone']")).getLocation();
    Robot robot = new Robot();
    robot.mouseMove(coordinates.getX(), coordinates.getY() + 120);
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseMove(coordinatesa.getX() + 100, coordinatesa.getY() + 130);
    Thread.sleep(500);
    robot.mouseMove(coordinatesa.getX() + 80, coordinatesa.getY() + 130);
    robot.delay(2000);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...