J'essaie d'utiliser phantomJS (quel outil génial btw!) Pour soumettre un formulaire pour une page pour laquelle j'ai des informations de connexion, puis afficher le contenu de la page de destination vers stdout. Je suis capable d'accéder au formulaire et de définir ses valeurs avec succès en utilisant fantôme, mais je ne suis pas tout à fait sûr de la bonne syntaxe pour soumettre le formulaire et afficher le contenu de la page suivante. Ce que j'ai jusqu'à présent, c'est:
var page = new WebPage();
var url = phantom.args[0];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
console.log(page.evaluate(function () {
var arr = document.getElementsByClassName("login-form");
var i;
for (i=0; i < arr.length; i++) {
if (arr[i].getAttribute('method') == "POST") {
arr[i].elements["email"].value="[email protected]";
arr[i].elements["password"].value="mypassword";
// This part doesn't seem to work. It returns the content
// of the current page, not the content of the page after
// the submit has been executed. Am I correctly instrumenting
// the submit in Phantom?
arr[i].submit();
return document.querySelectorAll('html')[0].outerHTML;
}
}
return "failed :-(";
}));
}
phantom.exit();
}
javascript
forms
post
phantomjs
Vijay Boyapati
la source
la source
setInterval
utilisation internevar func = steps[testindex]
, alorsconsole.log("step " + (testindex + 1) + ": " + funcName(func))
. Cela vous permet d'ajouter une description aux étapes en cours d'exécution.funcName
. J'ai également trouvé plus facile en parcourant une série de pages Web et en essayant différentes techniques de rendre la dernière page en utilisantpage.render("output.png");
.COOKIE
, et ma question est: * ce cookie est-il disponible dans l'phantom.cookies
objet lorsque le serveur renvoie la réponse * ?En outre, CasperJS fournit une belle interface de haut niveau pour la navigation dans PhantomJS, notamment en cliquant sur des liens et en remplissant des formulaires.
CasperJS
Mis à jour pour ajouter un article du 28 juillet 2015 comparant PhantomJS et CasperJS .
(Merci au commentateur M. M!)
la source
#someid
à remplir en fonction d'un ID.L'envoi de requêtes POST brutes peut être parfois plus pratique. Ci-dessous vous pouvez voir l'exemple original post.js de PhantomJS
la source
GET
requêtes de la même manière (en faisant quelque chose commepage.open(server, 'get', data, ...
) ne fonctionnera pas.Comme mentionné ci-dessus, CasperJS est le meilleur outil pour remplir et envoyer des formulaires. Exemple le plus simple possible de comment remplir et soumettre un formulaire en utilisant la fonction fill () :
la source