Phantomjs est un navigateur scriptable et sans tête. Il peut être une aide essentielle dans les tests automatisés des services Web, il peut générer des captures d'écran de la page qu'il visite, imprimer efficacement le trafic tout en parcourant une page, pour n'en nommer que quelques-unes de ses fonctionnalités. Phantomjs peut être scripté en JavaScript, nous n'avons donc pas besoin d'apprendre un autre langage si nous le connaissons. Malheureusement, son développement est suspendu pour le moment, mais la dernière version stable est disponible en téléchargement.
Dans ce didacticiel, nous allons installer phantomjs sur RHEL 8 / CentOS 8 et exécuter l'un des exemples fournis avec le package pour voir notre outil fonctionner.
Dans ce didacticiel, vous apprendrez :
- Comment télécharger le package phantomjs
- Comment extraire et placer le binaire sur le chemin
- Comment exécuter un exemple de script avec phantomjs

Configuration logicielle requise et conventions utilisées
Catégorie | Exigences, conventions ou version du logiciel utilisée |
---|---|
Système | RHEL 8/CentOS 8 |
Logiciel | Phantomjs 2.1.1 |
Autre | Accès privilégié à votre système Linux en tant que root ou via le sudo commande. |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Comment installer phantomjs sur RHEL 8 / CentOS 8 instructions étape par étape
Phantomjs est vraiment autonome. Si nous avons les quelques packages nécessaires, nous n'aurions pas besoin de root
accès pour installer l'outil pour nous-mêmes (c'est-à-dire accessible uniquement à notre utilisateur). Pour nous assurer que chaque utilisateur du système peut utiliser cet outil, nous le placerons sur un chemin d'accès à l'échelle du système, ce qui nécessite un utilisateur privilégié.
- Nous devons d'abord vérifier que nous avons les packages requis :
$ rpm -q glibcglibc-2.28-18.el8.x86_64$ rpm -q fontconfigfontconfig-2.13.1-2.el8.x86_64
Sinon, nous pouvons installer les packages ci-dessus avec
dnf
:# dnf install glibc fontconfig
- Nous pouvons visiter le site de téléchargement officiel pour trouver l'URL dont nous avons besoin. Dans notre cas, il s'agit de l'adresse du package pour Linux x86_64. Nous entrons le
/opt
répertoire, où nous allons stocker le binaire, les exemples et les readmes :# cd /opt
Et téléchargez le package avec
wget
:# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
- Ensuite, nous extrayons l'archive :
# tar -xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
- Un emplacement commun pour les fichiers binaires et les outils installés par l'utilisateur (c'est-à-dire ne provenant pas des dépôts de la distribution) est
/usr/local/bin
. Sur RHEL, c'est aussi sur le$PATH
de tout le monde par défaut. Nous créons un lien symbolique dans ce répertoire, et ce faisant, tout ancien ou nouvel utilisateur le trouvera avec une simple auto-complétion bash :# ln -s /opt/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr /local/bin/phantomjs
- Pour tester, nous avons
phantomjs
sur notre chemin, nous pouvons taper la commande sans chemin comme n'importe quel utilisateur du système :$ phantomjs --version2.1.1
- Alors que le binaire lui-même est maintenant sur notre chemin, les exemples livrés avec le paquet distribué ne le sont pas. Nous pouvons essayer notre outil en exécutant ces exemples, ce qui peut nous aider à écrire nos propres scripts pour phantomjs. L'exemple ci-dessous,
netlog.js
imprimera tout le trafic généré pendant que phantomjs visite un site Web, y compris les informations d'en-tête et les données binaires. Dans notre cas, nous l'exécutons sur le fameuxinfo.php
(phpphpinfo();
appelé) servi par un serveur Web exécuté localement.$ phantomjs /opt/phantomjs-2.1.1-linux-x86_64/examples/netlog.js http://localhost/info.php
Nous recevons toutes les données demandées et reçues, donc un simple appel car cela produira une longue sortie.
requested :{ "headers":[ { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 " }, { "name":"User-Agent", "value":"Mozilla/5.0 (Inconnu ; Linux x86_64) AppleWebKit/538.1 (KHTML, comme Gecko) PhantomJS/2.1.1 Safari/538.1" } ], " id":1, "method":"GET", "time":"2019-01-15T17:48:57.393Z", "url":"http://localhost/info.php"}reçu :{ " body":"", "bodySize":60718, "contentType":"text/html; charset=UTF-8", "headers":[ { "name":"Date", "value":"Mar, 15 Janvier 2019 17:48:57 GMT" }, { "name":"Server", "value":"Apache/2.4.35 (Red Hat Enterprise Linux) mod_perl/2.0.10 Perl/v5.26.2" }, { "name":"X-Powered-By", "value":"PHP/7.2.11" }, { "name":"Keep-Alive", "value":"timeout=5, max=100" } , [...]