我必须捕获特定网站的图像的屏幕截图。也许这是整个屏幕的20%折扣,我在下面的代码中使用过,它正在捕获整个屏幕。这没有帮助我解决问题。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));
答案 0 :(得分:1)
你能试试吗
driver.get("https://stackoverflow.com/");
WebElement element = driver.findElement(By.xpath("//span[(text()='Stack Overflow') and @class='-img _glyph']"));
WrapsDriver wrapsDriver = (WrapsDriver) element;
File screenshot = ((TakesScreenshot) wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE);
Rectangle rectangle = new Rectangle(element.getSize().width, element.getSize().height, element.getSize().height, element.getSize().width);
Point location = element.getLocation();
BufferedImage bufferedImage = ImageIO.read(screenshot);
BufferedImage destImage = bufferedImage.getSubimage(location.x, location.y, rectangle.width, rectangle.height);
ImageIO.write(destImage, "png", screenshot);
File file = new File("C:\\123.png");
FileUtils.copyFile(screenshot, file);
答案 1 :(得分:0)
如果您的代码试用版getScreenshotAs()
方法将获取整个页面的屏幕截图。
要捕获特定网页中 WebElement 的屏幕截图,可以使用 AShot()
方法导入 ashot-1.4.4.jar < / strong>,同时使用 Selenium Java Client v3.14.0 , ChromeDriver v2.41 , Chrome v 68.0 。
注意: ashot-1.4.4.jar 中的
AShot()
方法仅在启用jQuery的情况下有效< em> Web应用程序。
因此,由于未从 ashot-1.4.4.jar 中启用 jQuery 网站的 http://www.google.com/
方法, >无法获取所需的屏幕截图。
作为示例,我们将从网站 AShot()
拍摄快照。
代码块:
https://jquery.com/
屏幕截图:
答案 2 :(得分:0)
我正在使用selenium-java-3.141.59和ChromeDriver 83.0.4103.39,下面的代码对我来说非常合适:
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
WebElement element = driver.findElement(By.id("hplogo"));
Screenshot screenshotHeader = new AShot().coordsProvider(new WebDriverCoordsProvider()).shootingStrategy(ShootingStrategies.viewportPasting(100)).takeScreenshot(driver, element);
try {
ImageIO.write(screenshotHeader.getImage(),"jpg",new File("C:/TESTSELENIUM/Google.jpg"));
} catch (IOException e) {
e.printStackTrace();
}