Перетаскивание не работает в ChromeDriver 2.45.615291 Selenium - PullRequest
0 голосов
/ 18 января 2019

Я перепробовал все онлайн-решения, но не смог это исправить. Функция перетаскивания не работает в Selenium с Chrome Driver. Это мой код

WebElement From = driver.findElement(By.xpath("//*[@id='drag1']"));
WebElement To = driver.findElement(By.xpath("//*[@id='div2']"));

//Tried this
Actions act=new Actions(driver);
act.dragAndDrop(From, To).build().perform();

//Also this
Actions builder = new Actions(driver);
Action dragAndDrop = builder.clickAndHold(From).moveByOffset(-1, -1).moveToElement(To)
        .release(To)
        .build();
dragAndDrop.perform();

Я работаю с Chrom, пробовал с драйвером Chrome 2.15, но с исключением SessionNotCreated

Вот мой HTML

<script>
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>


<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
  <img src="img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>

<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

</body>
</html>

Нужно ваше предложение - спасибо!

1 Ответ

0 голосов
/ 18 января 2019

Если вы хотите использовать перетаскивание, вы можете использовать sendKeys, поэтому он выполняет ту же работу, что и перетаскивание, просто вместо того, чтобы передавать элементы xpath, вам нужно передать действие на странице, как UP, DOWN и т. Д. ВВ моем случае это работает

        Actions action = new Actions(driver);
        action.sendKeys(Keys.PAGE_DOWN).build().perform();
...