L'obtention de débogage à distance mis en place avec PhantomJS
Je suis en train de configurer le débogage à distance avec PhantomJS, sans beaucoup de chance. Je suis en suivant les instructions à https://github.com/ariya/phantomjs/wiki/Troubleshooting. J'ai un petit programme nommé debug.js
:
var system = require('system' ), fs = require('fs'), webpage = require('webpage');
(function(phantom){
var page=webpage.create();
function debugPage(){
console.log("Refresh a second debugger-port page and open a second webkit inspector for the target page.");
console.log("Letting this page continue will then trigger a break in the target page.");
debugger; //pause here in first web browser tab for steps 5 & 6
page.open(system.args[1]);
page.evaluateAsync(function() {
debugger; //step 7 will wait here in the second web browser tab
});
}
debugPage();
}(phantom));
Maintenant, je l'exécuter à partir de la ligne de commande:
$ phantomjs --remote-debugger-port=9001 --remote-debugger-autorun=yes debug.js my.xhtml
La console.log
les messages sont affichées dans la fenêtre shell. J'ai ouvert une page de navigateur pour localhost:9001
. C'est à ce moment que dit la documentation "obtenir de l'inspecteur web pour phantom contexte" Cependant, je ne vois qu'une seule entrée pour about:blank
. Quand je clique dessus, j'obtiens un inspecteur de la pertinence about:blank page avec l'URL http://localhost:9001/webkit/inspector/inspector.html?page=1
. La documentation parle de l'exécution de __run()
, mais je n'arrive pas à accéder à la page où je le ferais; about:html
semble contina un __run()
qui est un no-op.
FWIW, je suis à l'aide de PhantomJS 1.9.1 sous W8.
Ce qui me manque?
- J'utilise ceci la redirection d'un port local vers le distant de port du serveur web à la place.
Vous devez vous connecter pour publier un commentaire.
La documentation dit :
__run()
n'est pas un no-op, mais juste un wrapper de votre script. Vous devez sélectionner l'onglet Console, d'abord, puis entrez__run()
dans la fenêtre de commande. Si vous êtes familier avec google Chrome, il est relativement le même que pour les développeurs de l'outil.__run()
, look ici. Chrome v64.x Le curseur saute dans une nouvelle ligne...?!Pour déboguer un script de démarrage phantomjs comme suit:
Voici un super test simple script qui fonctionne (hello.js). Notez que vous devez mettre
debugger;
en haut de votre script, ou n'importe où dans votre script, vous voulez percer dans le débogueur.hello.js
Maintenant, il suffit de charger l'url suivante dans votre navigateur:
http://127.0.0.1:9000/
Ensuite, vous verrez un lien figurant dans la page du navigateur
Cliquez dessus, et vous verrez alors une page qui ressemble à l'Inspecteur de Chrome. Cliquez sur la "Console" bouton dans la barre d'outils c'est dans cette page (pas la console de Chrome ou Safari que vous avez l'habitude d'utiliser).
Maintenant, dans ce type de console
__run()
et appuyez sur entrée. Votre script va afficher et démarrer le débogage!J'ai eu des problèmes pour obtenir de débogage pour travailler sur Mac à l'aide de la Version Chrome 57.0.2987.133 (64-bit). J'ai eu le débogueur pour ouvrir sur localhost:9000 (127.0.0.1:9000 ne fonctionne pas pour moi) mais après avoir saisi __() run (oui, avec un double trait de soulignement), il n'y a pas de réponse. J'ai pu voir d'autres fichiers js, en vertu de Sources, le mien a été répertorié, mais était vide. (Je n'ai activer le débogage dans le navigateur chrome)
J'ai essayé la même chose sur safari et tout a fonctionné comme annoncé.
Mise à JOUR pour Chrome: (à partir de Thiago Fernandes ci-dessous): Apparemment, le problème est causé par le Chrome n'acceptant pas la touche entrée, de sorte que la solution de contournement consiste à évaluer cette fonction à l'intérieur de la console de chrome, pour obtenir le enterKey de travail:
function isEnterKey(event) { return (event.keyCode !== 229 && event.keyIdentifier === "Enter") || event.keyCode === 13; }
__run()
n'était pas réellement exécutées.Dans mon cas, le
__run()
ne seraient pas exécutés dans la console.Si c'est le même problème que vous avez, lisez la suite....
PowerShell ouverte et exécuter le script:
__run()
en vertu de Regarder les Expressions!Mettre un
debugger
déclaration dans le script de débogage!