我想模拟一个简单的鼠标单击并在 svg 元素中拖动。我设法获得了起点和终点的坐标,包括绝对(窗口坐标)和相对于封装 svg 元素的坐标。这是我用来模拟鼠标的代码:
Actions builder = new Actions(driver);
builder.moveToElement(area, xStart, yStart);
builder.clickAndHold();
builder.moveToElement(area, xStop, yStop);
builder.release();
Action setFilter = builder.build();
setFilter.perform();
其中 area 是代表我的 svg 的 WebElement,坐标相对于该元素。注意:
area.getLocation(); // returns null
这让我想知道 webdriver 是否能够找到该元素。所以我尝试了绝对坐标:
Actions builder = new Actions(driver);
builder.moveByOffset(chart.getLocation().x + xStart, chart.getLocation().y + yStart);
builder.clickAndHold();
builder.moveByOffset(xStop - xStart, yStop - yStart);
builder.release();
Action setFilter = builder.build();
setFilter.perform();
其中 chart 是围绕 svg 元素的 div(请注意,div 位置和 svg 位置之间的偏移量仅为 10 像素,并不重要)。那也不起作用,我也尝试了与 div 的相对位置,但仍然没有运气。
我在这里做错了什么?