Java 如何通过单击和拖动使用Selenium导航地图
我正在使用Selenium和Java尝试自动化一些google地图导航。我想点击并按住地图,然后移动到某个方向,然后释放光标。这将在页面上移动地图 到目前为止我有Java 如何通过单击和拖动使用Selenium导航地图,java,selenium,google-maps,automation,Java,Selenium,Google Maps,Automation,我正在使用Selenium和Java尝试自动化一些google地图导航。我想点击并按住地图,然后移动到某个方向,然后释放光标。这将在页面上移动地图 到目前为止我有 WebElement canvasElement = driver.findElement(map); Actions builder = new Actions(driver.getWebDriver()); builder.moveToElement(canvasElement).clickAndHold().moveByOffs
WebElement canvasElement = driver.findElement(map);
Actions builder = new Actions(driver.getWebDriver());
builder.moveToElement(canvasElement).clickAndHold().moveByOffset(300, 0).release().perform();
但是,页面上的任何内容都不会移动。我知道我选择的地图是正确的,因为如果我这样做的话
builder.moveToElement(canvasElement).clickAndHold().moveByOffset(300, 0).perform();
然后,当我将鼠标悬停在地图上时,地图会移动,而无需单击鼠标左键,因为它仍处于“单击并按住”状态,并且从未释放。不确定moveByOffset为什么不适用于此特定情况。任何建议都很好单击并按住地图,然后移动到某个方向,然后释放光标,在创建操作链时,您还需要调用
build()
方法,您可以使用以下解决方案:'
WebElement canvasElement = driver.findElement(map);
new Actions(driver).moveToElement(canvasElement, 0, 0).clickAndHold().moveByOffset(300, 0).release().build().perform();
它仍然不起作用,我相信我以前尝试过这种组合。
build()
已在perform()
中调用,添加0的偏移量没有任何作用。@Guy现在你让我失望了。没有…偏移量为0。。。同样,但偏移量为(0,0)
。但是你的评论…没有任何作用。。。最让我吃惊的是。我仍然相信你理解canvas,OP在处理什么。你认为moveToElement(canvasElement,0,0)
做什么<代码>将鼠标移动到距元素中心的偏移位置。。如果你给0,0
它不会移动巡洋舰。它还有返回moveInTicks(target、xOffset、yOffset)代码>,在这种情况下与moveToElement(canvasElement)
完全相同,返回moveInTicks(目标,0,0)代码>。我尝试过这些变体,但没有成功。我得到的最接近的是我在原始帖子中列出的东西,在那里它单击但不移动或释放地图。你尝试过dragAndDropBy()
?是的,我尝试过类似builder.dragAndDrop(canvasElement,driver.findElement(By.className(“asdf”)).perform()的东西
查看它是否可以拖动到页面上其他位置的随机元素,但它也没有做任何操作。我得到的最接近的是我上面提到的,它会在画布/地图上点击并保持,但不会移动