我正在尝试使用 Robot 框架自动执行拖放功能。为了实现这一点,我编写了以下代码:
WebDriver driver = new FirefoxDriver();
driver.get("http://the-internet.herokuapp.com/drag_and_drop");
WebElement source = driver.findElement(By.id("column-a"));
WebElement target = driver.findElement(By.id("column-b"));
Robot robot = new Robot();
robot.mouseMove(source.getLocation().getX() + (source.getSize().getWidth()/2), source.getLocation().getY() + (source.getSize().getHeight()/2));
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(target.getLocation().getX() + (target.getSize().getWidth()/2), target.getLocation().getY() + (target.getSize().getHeight()/2));
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(3000);
执行上面的代码,我可以看到鼠标同时移动到源和目标,但是拖放没有发生。你能告诉我我在这里做错了什么吗?
最佳答案
您可以尝试使用此方法——要获取源代码,请将其嵌入您的代码中:
WebElement source = driver.findElement(By.xpath("//*[@id='column-a']"));
Locatable element = (Locatable)source;
Point p= element.getCoordinates().inViewPort();
int sourceX=p.getX()+25;(25 can be increased or decreased accordingly)
int sourceY=p.getY()+120;(120 can be increased or decreased accordingly)
对于目的地,请将其嵌入您的代码中:
WebElement target = driver.findElement(By.id("column-b"));
Locatable elementTarget = (Locatable)target;
Point Target= elementTarget.getCoordinates().inViewPort();
int targetX=Target.getX()+55;
int targetY=Target.getY()+150;
关于java - 无法使用 Robot 在 Selenium WebDriver 中拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765285/