我正在使用Selenium 3和Java,Cucumber& 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但无法在任何地方找到我的答案。
答案 0 :(得分:1)
如果我理解正确,Selenium 3不支持HTML 5拖放。他们正在努力:https://github.com/SeleniumHQ/selenium/issues/2285 有基于javascript的解决方案,但它们并不总是有效。