java - 无法使用 Robot 在 Selenium WebDriver 中拖放

标签 java selenium-webdriver drag-and-drop awt awtrobot

我正在尝试使用 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/

相关文章:

使用 trackby 的 Angular Drag and Drop 正在迅速恢复

wpf - 在 WPF 中模拟拖/放事件

java - 将嵌套 JSON 表示为 Neo4j (SDN) 中的节点

java - 使用 Vaadin 从菜单栏打开 pdf 文件

java - 使用 Java 的 DB2 序列值

javascript - 选择下拉列表中标记为列表的元素

java - Java 中的 3D 模拟

python - 是否可以在 Firefox 上列出已安装的证书?

selenium - 如何使用 Selenium WebDriver/RC 测试 UI 上显示的广告

ios - 无法将图像从媒体库拖放到 Xcode Interface Builder 中的 View Controller 上