MoveToElement不适用于鼠标悬停并按住元素上的单击

时间:2016-07-01 07:50:08

标签: java selenium selenium-webdriver

以下是该页面的示例HTML代码:

enter image description here

我正在尝试使用以下xpath将鼠标悬停在元素上:

WebElement Bar1 = dvr.findElement(By.xpath("//div[@class='barModel']/div[@class='model']/canvas[@class='segment']")));

以下是代码

act = new Action (driver);
act.moveToElement(Bar1).build().perform();
act.clickAndHold();

我的目标是拖动元素。运行上面的代码不会给出任何错误,但页面上没有可见的交互。我可以使用Robot类来完成这个任务,但只是好奇使用Action类来实现它。

2 个答案:

答案 0 :(得分:0)

您没有执行clickAndHold操作:

act = new Action (driver);
act.moveToElement(Bar1).build().perform();
act.clickAndHold().perform();

如果你想拖放元素,你可以使用内置函数:

act.dragAndDrop(movedElement, targetElement).perform();

答案 1 :(得分:0)

您可以使用JavaScriptExecutor执行mouseover,如下所示: -

JavascriptExecutor js = (JavascriptExecutor) dvr;
js.executeScript("var clickEvent = document.createEvent('MouseEvents');clickEvent.initEvent('mouseover', true, true); arguments[0].dispatchEvent(clickEvent);", Bar1);

通过使用上述Java Script,您可以执行mouseover。现在,您可以使用dragAndDrop移动元素,如下所示: -

Actions action = new Actions(dvr)
action.dragAndDrop(sourceElement, destinationElement).build().perform()

希望它会帮助你...... :)