2016-06-20 19 views
2

HINWEIS: Mir ist bewusst, dass diese Frage vor ein paar Mal gestellt wurde, aber ich habe ein Problem, das andere nicht zu haben scheinen.Screenshot spezifisches Element mit Selen

Obwohl ich den Punkt des Elements mit seiner Breite und Höhe richtig zu bekommen scheint, ist der endgültige Zuschnitt falsch. Es ist wie der Screenshot, den ich nehme, hat andere Dimensionen als die Webseite. Ich verwende den Chrome-Treiber.

Dies ist mein Code für den Versuch, einen Screenshot des Google-Logo-Bild zu bekommen:

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){ 

} 

Hier ist meine endgültige Logo Bild: enter image description here

Hier ist, was sollte es bekommen (wie ein png nicht als gif): enter image description here

Hat jemand eine Idee, was könnte los sein?

+0

Sind Sie sicher, dass Sie ein falsches Bild erhalten? Denn für mich funktioniert der Code einwandfrei – Madhan

+0

Ja ich habe das Bild in der Frage gepostet. Ich habe auch verschiedene Elemente ausprobiert. Es verwirrt mich wirklich. Haben Sie den Chrome-Treiber verwendet? Welche Version von Selen benutzt du? @Madhan – Mitchell

+0

Es ist die richtige Breite und Höhe scheint es, aber es ist wie Zoomen auf oder etwas auf dem Screenshot? Es ist wie der Punkt und Breite und Höhe des Screenshots sind nicht identisch mit der Webseite. – Mitchell

Antwort

0

Überprüfen Sie, ob Sie eine benutzerdefinierte Skalierung für Ihr Betriebssystem haben. Ich hatte das gleiche Problem mit 125% Skalierung auf Windows.

Verwandte Themen