Невозможно перетащить элемент с помощью действий - PullRequest
0 голосов
/ 22 мая 2018

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

System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"//drivers//chrome//chromedriver.exe");
WebDriver driver=new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("http://www.seleniumeasy.com/test/drag-and-drop-demo.html");
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    WebElement itemToBeDragged=driver.findElement(By.xpath(" (//h3[contains(.,'Items to Drag')]//following-sibling::span)[1]"));
WebElement 
   whereToBeDragged=driver.findElement(By.xpath("//div[@id='mydropzone']"));
    Actions action=new Actions(driver);
    Action dragAndDrop = action.clickAndHold(itemToBeDragged).moveToElement(whereToBeDragged).release(whereToBeDragged).build();
    dragAndDrop.perform();
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    driver.close();

Используя приведенный выше код, я не могу перетащить элемент.Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Существует проблема с реализацией Drag and Drop по URL: - http://www.seleniumeasy.com/test/drag-and-drop-demo.html, Они могли бы добавить функциональность перетаскивания с помощью событий наведения элементов.

  1. В результате, если или до тех пор, пока мы не выберем и не наведем элемент ItemToBeDragged на секунду или более, он не добавит элемент в список перетаскивания,
  2. и таким же образом.если или пока мы не наведем курсор мыши на элемент itemToBeDragged (наведите курсор мыши) на зону сброса, он не удалит перетаскиваемый элемент.

Поэтому для этой конкретной ситуации вы можете использовать класс Java робота для генерациифактические события мыши для выполнения перетаскивания на этой странице следующим образом: -

WebDriver browser = new ChromeDriver();
browser.get("http://www.seleniumeasy.com/test/drag-and-drop-demo.html");

// Robot class uses Screen Coordinates, therefore, we need the fullscreen browser 
// instead of maximised. so that the webpage coordinates are mapped to screen
// coordinates.
browser.manage().window().fullscreen();

WebElement itemToBeDragged = browser
            .findElement(By.xpath(" (//h3[contains(.,'Items to Drag')]//following-sibling::span)[1]"));
WebElement whereToBeDragged = browser.findElement(By.xpath("//div[@id='mydropzone']"));

// robot class object to perform actual mouse events.
// import java.awt.Robot and java.awt.event.InputEvent
Robot robot = new Robot();

try {
        robot.mouseMove(itemToBeDragged.getLocation().x+itemToBeDragged.getSize().width/2, itemToBeDragged.getLocation().y+itemToBeDragged.getSize().getHeight()/2);
        Thread.sleep(1000);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseMove(itemToBeDragged.getLocation().x+itemToBeDragged.getSize().width/3, itemToBeDragged.getLocation().y+itemToBeDragged.getSize().getHeight()/3);
        Thread.sleep(1000);


        Thread.sleep(1000);
        robot.mouseMove(whereToBeDragged.getLocation().x+whereToBeDragged.getSize().width/3, whereToBeDragged.getLocation().y+whereToBeDragged.getSize().getHeight()/3);

        Thread.sleep(1000);
        robot.mouseMove(whereToBeDragged.getLocation().x+whereToBeDragged.getSize().width/2, whereToBeDragged.getLocation().y+whereToBeDragged.getSize().getHeight()/2);

        Thread.sleep(1000);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);

        Thread.sleep(1000);
    } catch (Exception e) {
        e.printStackTrace();
    }
0 голосов
/ 22 мая 2018

Можете ли вы попробовать использовать строитель

Реализуйте этот метод

    public static void dragAndDrop(WebElement fromWebElement, WebElement toWebElement) {

    Actions builder = new Actions(driver);
    builder.dragAndDrop(fromWebElement, toWebElement);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...