J'ai besoin d'obtenir une image plein écran d'un site web par URL, existe-t-il des programmes PHP pour cela ou des services, sinon, existe-t-il des programmes Java pour cela ?
Réponses
Trop de publicités?Il existe de nombreux moyens :
-
Utilisez http://khtml2png.sourceforge.net/index.php?page=faq
-
Utilisez le moteur webkit avec quelques bindings pour celui-ci : http://www.blogs.uni-osnabrueck.de/rotapken/2008/12/03/create-screenshots-of-a-web-page-using-python-and-qtwebkit/
-
Utiliser le moteur mozilla en mode batch : http://www.chimeric.de/blog/2007/1018_automated_screenshots_using_bash_firefox_and_imagemagick
Vous devez disposer d'une version spéciale du navigateur pour "rendre" la page. après il est traité par PHP ou Java.
Vous aurez très probablement besoin de mettre en place des scripts d'automatisation personnalisés pour frapper une URL après avoir fait un ping sur un serveur fonctionnant sous Windows, OSX ou un gestionnaire de fenêtres Linux.
Il existe des services qui réalisent des captures d'écran pour vous.
http://webthumb.bluga.net/home
pour n'en citer que quelques-uns.
La meilleure solution pour moi : Utiliser webdriver sélénium Et faire une capture d'écran peut être aussi simple que este :
import java.io.File;
import java.net.URL;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class Testing {
public void myTest() throws Exception {
WebDriver driver = new RemoteWebDriver(
new URL("http://localhost:4444/wd/hub"),
DesiredCapabilities.firefox());
driver.get("http://www.google.com");
// RemoteWebDriver does not implement the TakesScreenshot class
// if the driver does have the Capabilities to take a screenshot
// then Augmenter will add the TakesScreenshot methods to the instance
WebDriver augmentedDriver = new Augmenter().augment(driver);
File screenshot = ((TakesScreenshot)augmentedDriver).
getScreenshotAs(OutputType.FILE);
}
}
N'oubliez pas d'utiliser FireFoxDriver. HtmlUnitDriver ne fonctionnera pas de cette façon car il est sans tête.
Doucement !
Litmus est une excellente ressource en ligne pour ce genre de choses ; vous pouvez soumettre une URL et obtenir des captures d'écran pleine page sur les derniers navigateurs. Si vous souscrivez à un abonnement payant ou si vous l'utilisez le week-end, vous aurez accès au test sur l'ensemble de ses 22 navigateurs et non plus seulement sur le plus récent. J'utilise ce site web en permanence, je le trouve phénoménal.
BrowserShots est également excellent, et il prend en charge des tonnes de navigateurs supplémentaires, mais d'après mon expérience, il est aussi beaucoup plus lent. Il est bon de l'utiliser si vous besoin de pour tester certains navigateurs que Litmus ne fait pas, cependant.
Vous pouvez également le faire vous-même si vous disposez d'un serveur dédié. L'idée est de lancer un serveur X et un navigateur en mode plein écran, de prendre une photo et de l'enregistrer dans un fichier image.
En fonction de votre utilisation (occasionnelle ou intensive), vous pouvez adapter le processus (c'est-à-dire ne pas tuer X à chaque fois, etc...) pour le rendre plus rapide.
- Réponses précédentes
- Plus de réponses