如何使用Selenium WebDriver在画布上移动鼠标进行绘图

4

我希望能够自动绘制画布元素。我已经编写了一个测试用例并且通过了。

但是在我的代码中,我编写了选择绘图工具并在画布上绘制简单线条的函数。最终选择了绘图工具,但没有绘制线条。
以下是代码:

public void DrawLine() {    
wait.until(ExpectedConditions.elementToBeClickable(anotate_draw));    
    action.click(anotate_draw).perform();     
    action.clickAndHold(canvas_page1)
    .moveByOffset(420, 280)    
    .moveByOffset(550,300)  
    .release().build().perform();
}
1个回答

3
你可能已经自己回答了这个问题。但是以下方法也可能适用于你:

WebElement element = driver.findElement(By.xpath("Your xPath")); // where your canvas element is 

    Actions builder = new Actions(driver);
    Action drawAction = builder.moveToElement(element,50,50)  // start point
                 .click()
                 .moveByOffset(100, 60) // second point
                 .doubleClick()
                 .build();
       drawAction.perform();

它有帮助,但是在我的情况下存在一个问题,就是Selenium的速度太快了,导致它只是标记了画布内部区域中的点。 - Tom
也许你需要使用 ClickAndHold(IWebElement) 然后移动。 - john rains

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接