如何使用Selenium webdriver 3进行拖动,其中要拖动的基础元素是<img/>标记

时间:2017-01-17 14:57:38

标签: java selenium cucumber

我正在使用Selenium 3和Java,Cucumber&amp; ChromeDriver。我试图从img元素拖动但Selenium不允许将焦点移动到该元素以便拖放。我尝试了以下所有选项。 PLS。让我知道是否有人可以提供帮助。

使用键盘操作:

Actions builder = new Actions(driver);
builder.keyDown(Keys.CONTROL).click(someElement).click(someOtherElement).        keyUp(Keys.CONTROL).build().perform();

使用鼠标操作:

Actions builder = new Actions(driver);
builder.clickAndHold(someElement).moveToElement(otherElement).release( otherElement).build().perform();

代码适用于Robot类:

public String dragElementFrom="//div[@class='asset-instructions col-xs-6']/div[5]/div/ul/li[1]/div/img";
public String dragElementTo="//*[@id='parity-on-page-preview']";

WebElement e = objHelp.WaitForElement(driver,By.xpath(obj.dragElementFrom));    WebElement f = objHelp.WaitForElement(driver,By.xpath(obj.dragElementTo));

 Point coordinates1 = e.getLocation();
 Point coordinates2 = f.getLocation();
 Robot robot = new Robot();

 robot.mouseMove(coordinates1.getX()+55, coordinates1.getY()+118);
 robot.mousePress(InputEvent.BUTTON1_MASK);
 robot.mouseMove(coordinates2.getX()+200, coordinates2.getY()+200);
 robot.mouseRelease(InputEvent.BUTTON1_MASK);
 Thread.sleep(2000);

机器人类的问题是当我运行测试时,我需要确保浏览器窗口是聚焦的,否则Robot类不起作用。

我也试过使用Firefox,但它也一样。我也做了研究stackoverflow但无法在任何地方找到我的答案。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,Selenium 3不支持HTML 5拖放。他们正在努力:https://github.com/SeleniumHQ/selenium/issues/2285 有基于javascript的解决方案,但它们并不总是有效。