По сути, проблема заключается в том, какие координаты вы используете, и в реализации вашего драйвера bowser / web-драйвера.Спецификация W3C гласит, что смещение команд Action находится от центра элемента.Но не все реализации веб-драйверов следуют этому.Таким образом, в основном moveToElement
x и y смещения для драйвера геккона (Firefox) рассчитываются от центра элемента в вашем случае от центра холста, но для Chrome Driver (Google Chrome) кординаты вычисляются из левого верхнего угла,Поэтому, если вам нужна поддержка перетаскивания, вам понадобится что-то вроде этого.
WebDriver driver = getDriver();
driver.get("https://gojs.net/latest/samples/panelLayout.html");
WebElement flowCanvas = driver.findElement(By.xpath("//div[@id='myDiagramDiv']//canvas"));
if(isGoogleChrome()){
new Actions(driver)
.moveToElement(flowCanvas, 100, 125).clickAndHold()
.moveToElement(flowCanvas, 150, 175).release()
.perform();
} else if (isFireFox()){
new Actions(driver)
.moveToElement(flowCanvas, -50, -50).clickAndHold()
.moveToElement(flowCanvas, 100, 100).release()
.perform();
}
Как вы можете видеть для Firefox, вы должны использовать отрицательные значения, чтобы перемещать мышь от центра к верхнему левому элементу вдля холста и хрома нужно немного переместить мышь вниз и вправо.