注意:我知道这个问题在几次之前已经被问到,但是我遇到了其他人似乎没有的问题。
即使我看起来正确地得到了元素的点及其宽度和高度,但最终的裁剪是不正确的。这就像我拍摄的屏幕截图具有不同的网页尺寸。我正在使用Chrome驱动程序。
这是我的代码,用于尝试获取Google徽标图片的屏幕截图:
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
WebElement ele = driver.findElement(By.id("hplogo"));
//Get entire page screenshot
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = null;
try {
fullImg = ImageIO.read(screenshot);
} catch (IOException e) {
}
//Get the location of element on the page
Point point = ele.getLocation();
//Get width and height of the element
int eleWidth = ele.getSize().getWidth();
int eleHeight = ele.getSize().getHeight();
//Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot = fullImg.getSubimage(point.getX(), point.getY(), eleWidth,
eleHeight);
try {
ImageIO.write(eleScreenshot, "png", screenshot);
} catch (IOException e) {
}
//Copy the element screenshot to disk
File screenshotLocation = new File("/Users/M/Desktop/stuff/logo.png");
try{
FileUtils.copyFile(screenshot, screenshotLocation);
}catch(IOException e){
}
有没有人知道可能会发生什么?
答案 0 :(得分:0)
检查您的操作系统是否有自定义缩放功能。我在Windows上使用125%缩放时遇到了同样的问题。
答案 1 :(得分:-1)
有关更多详细信息,请参见以下屏幕截图。
转到系统设置>搜索显示>将“使一切变得更大”下拉列表的值更改为100%。然后再次运行代码,这对您会很好。