PhantomJS est un navigateur web sans interface, c'est-à-dire qu'il n'a pas d'interface graphique visible pour l'utilisateur. Son développement est actuellement suspendu jusqu'à nouvel ordre, mais il reste une solution intéressante pour de nombreuses applications.
Il est scriptable avec JavaScript et peut fonctionner sur différents systèmes d'exploitation tels que Windows, macOS, Linux et FreeBSD. En utilisant QtWebKit comme back-end, PhantomJS offre un support rapide et natif pour de nombreuses normes web telles que la manipulation du DOM, les sélecteurs CSS, JSON, Canvas et SVG.
Par exemple, avec un simple script, on peut charger la page d'accueil de Google, attendre un peu et ensuite capturer cette page sous forme d'image. Voici un exemple de script :
var page = require('webpage').create();
page.open('http://www.google.com', function() {
setTimeout(function() {
page.render('google.png');
phantom.exit();
}, 200);
});
PhantomJS est une solution optimale pour plusieurs scénarios. En matière d'automatisation de pages, on peut accéder aux pages web et extraire des informations en utilisant l'API DOM standard ou des bibliothèques courantes comme jQuery. Pour la capture d'écran, on peut capturer de manière programmée le contenu web, y compris SVG et Canvas, et créer des captures d'écran de sites web avec une prévisualisation en miniature.
Dans le domaine du test de sites web sans interface, on peut exécuter des tests fonctionnels avec des cadres tels que Jasmine, QUnit, Mocha, WebDriver, etc. Enfin, pour le suivi du réseau, on peut surveiller le chargement des pages et exporter les résultats sous forme de fichiers HAR standard. On peut également automatiser l'analyse des performances à l'aide de YSlow et Jenkins.
Si vous êtes prêt à utiliser PhantomJS, vous pouvez installer le logiciel et suivre le guide de démarrage rapide. Si vous souhaitez en savoir plus, vous pouvez lire les FAQ, explorer d'autres exemples et étudier la documentation complète de l'API. Pour le code source, le suivi des problèmes et d'autres informations de développement, rendez-vous sur github.com/ariya/phantomjs. PhantomJS est distribué sous la licence BSD (SPDX : BSD-3-Clause).