web-dev-qa-db-fra.com

comment exécuter PhantomJS à partir de PHP

Je veux exécuter PhantomJS à partir de PHP sur localhost.

Tout organisme peut-il expliquer comment exécuter PhantomJS à partir de PHP et quel package dois-je télécharger depuis phantomjs.org?

19
MOB
  • téléchargez le binaire PhantomJS , téléchargez-le quelque part et rendez-le exécutable (chmod +x)
  • si vous allez faire des captures d'écran, configurez fontconfig (c'est assez spécifique à ma configuration mais le but est de vous assurer d'avoir au moins quelques polices sur votre système)
  • exécutez ce qui suit en PHP:
    $response = exec('/path/to/phantomjs myscript.js');
28
Benjy

Il y a en fait une bibliothèque appelée PHP PhantomJS , destinée à vous faciliter la tâche!

PHP PhantomJS est une bibliothèque PHP PHP flexible pour charger les pages via le navigateur sans tête PhantomJS et renvoyer la réponse de la page. Il est pratique pour tester les sites Web qui nécessitent la prise en charge de javascript et prend également en charge les captures d'écran.

Documentation complète

Liste des fonctionnalités :

  • Charger des pages Web via le navigateur sans tête PhantomJS
  • Affichez les données de réponse détaillées, notamment le contenu de la page, les en-têtes, le code d'état, etc.
  • Gérer les redirections
  • Afficher les erreurs de la console javascript
  • Afficher les informations détaillées sur le débogage de PhantomJS
  • Enregistrer les captures d'écran sur le disque local
  • Définir la taille de la fenêtre
  • Définissez les paramètres de capture d'écran x, y, largeur et hauteur
  • Retarder le rendu de la page pendant une durée spécifiée
  • Exécuter PhantomJS avec des options de ligne de commande
  • Créez et exécutez facilement des scripts PhantomJS personnalisés

Assurez-vous cependant que votre version de PhantomJS est compatible avec votre version de PHP PhantomJS:

Remarque: La version 4.0 de cette bibliothèque attend actuellement un problème non résolu avec PhantomJS 2.0.

9
John Slegers

J'ai récemment publié un projet qui donne PHP accès à un navigateur. Téléchargez-le ici: https://github.com/merlinthemagic/MTS . Sous le capot, il repose sur PhantomJS.

Après le téléchargement et la configuration, vous utiliserez simplement le code suivant:

$myUrl          = "http://www.example.com";
$windowObj      = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($myUrl);

//now you can either retrive the DOM and parse it, like this:
$domData    = $windowObj->getDom();

//or take screen shots
$imageData    = $windowObj->screenshot();

//or use the mouse to click buttons:
$windowObj->mouseEventOnElement("[id=searchInput]", 'leftclick');

//or type with the keyboard :
$windowObj->sendKeyPresses("my search words");

//or load and execute custom javascript, fill forms etc, etc.
3
MerlinTheMagic