Автоматизация Canvas элементов.
Одним из нововведений HTML 5 был тег < canvas >, с помощью которого можно было создавать различные графики и рисунки используя JavaScript. Многие разарботчики стали активно его применять при создании веб-приложений. Поэтому любой автоматизатор может легко оказаться на проекте, где нужно будет автоматизтровать работу и с Canvas элементами. Так давайте поробуем с помощью Selenium WebDiver это сделать:
@Test
public void testHTML5CanvasDrawing() throws Exception {
//Get the HTML5 Canvas Element
WebElement canvas = driver.findElement(By.id("imageTemp"));
//Select the Pencil Tool
Select drawtool = new Select(driver.findElement(By.id("dtool")));
drawtool.selectByValue("pencil");
//Create a Action Chain for Draw a shape on Canvas
Actions builder = new Actions(driver);
builder.clickAndHold(canvas).moveByOffset(10, 50).
moveByOffset(50,10).
moveByOffset(-10,-50).
moveByOffset(-50,-10).release().perform();
//Get a screenshot of Canvas element after Drawing and
//compare it to the base version to verify if the Drawing is performed
FileUtils.copyFile(WebElementExtender.captureElementBitmap(canvas), new File("c:\\tmp\\post.png"));
assertEquals(CompareUtil.Result.Matched, CompareUtil.CompareImage("c:\\tmp\\base_post.png", "c:\\tmp\\post.png"));
}