作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题可能有点鲁莽,但我想知道是否有人有过使用 Selenium WebDriver 或任何其他 Java 库向截取的屏幕截图添加文本的经验?目前我正在使用:
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenShotFile, new File("C:\\XXX\\XXX\\SeleniumScreenshots\\" + "png"));
为了截取屏幕截图并且它工作正常,但有时我需要在屏幕截图中添加描述性文本,例如:“由于这个原因失败了......”我真正需要的是页面的特定位置(例如全局页脚、页眉、汉堡菜单、某些图像)可能会通过 xpath 表达式找到,截取该位置的屏幕截图并添加带有问题描述的文本。如果有人知道如何实现,请回复示例代码。
最佳答案
直接在驱动返回的截图上绘制:
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"));
如果目标元素在屏幕外,那么您可能必须事先将其滚动到窗口中:
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
关于java - 如何在 Selenium WebDriver 中的屏幕截图中添加文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845941/
我是一名优秀的程序员,十分优秀!