2016-03-07 3 views
1

Мой вопрос может быть немного опрометчивым, но я хотел бы знать, есть ли у кого-нибудь опыт добавления текста к снятому скриншоту с использованием Selenium WebDriver или любой другой библиотеки Java? В настоящее время я с использованием:Как добавить текст в скриншот в Selenium WebDriver?

File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
      FileUtils.copyFile(screenShotFile, new File("C:\\XXX\\XXX\\SeleniumScreenshots\\" + "png")); 

для того, чтобы сделать скриншот и он работает нормально, но иногда мне нужно добавить descritive текст на скрине л, как: «Это не удалось из-за этого ...» То, что мне нужно, это определенное местоположение страницы (например, глобальный нижний колонтитул, заголовок, меню гамбургера, определенное изображение), которые можно найти с помощью выражения xpath, сделать снимок экрана этого местоположения и добавить текст с описанием проблемы. Если кто-нибудь имеет представление о том, как это может быть реализовано, ответьте на примерный код.

+1

Возможный дубликат (http://stackoverflow.com/questions/10929524/how-to-add-text-to -an-image-in-java) – andrucz

+0

@andrucz Позвольте мне проверить ссылку .. – GordonFreaman

ответ

2

Ничего особенного! Подстройка код по ссылке, предоставленной @andrucz

WebElement failedElement = driver.findElement(<locate your element>); 
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
final BufferedImage image = ImageIO.read(screenShotFile); 
Graphics g = image.getGraphics(); 
g.setFont(g.getFont().deriveFont(30f)); 
g.drawString("Failed because of this!!", failedElement.getSize().getX(), failedElement.getSize().getY()); //Top-left coordinates of your failed element 
g.dispose(); 
ImageIO.write(image, "png", new File("test.png")); 
1

Чтобы непосредственно рисовать на скриншоте, возвращенного водителя:

WebDriver driver = new FirefoxDriver(); 
driver.get("http://www.google.com/"); 

// take the screenshot 
byte[] img_bytes = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES); 
BufferedImage img = ImageIO.read(new ByteArrayInputStream(img_bytes)); 

// add some text and draw a rectangle 
Graphics g = img.getGraphics(); 
g.setColor(Color.red); 
g.setFont(new Font("SansSerif", Font.BOLD, 14)); 
g.drawString("My text", 10, 10); 
g.drawRect(5, 5, 50, 50); 
g.dispose(); 

// save the image 
ImageIO.write(img, "png", new File("screenshot.png")); 

Если целевой элемент на экране, то вам, возможно, придется прокрутить его в окно заранее: [? Как добавить текст к изображению в Java]

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element); 

 Смежные вопросы

  • Нет связанных вопросов^_^