Remplissage de formulaire d'identification avec des zombies dans node.js
Soir! Je suis en train de vous connectez sur un site web avec zombie.js mais je ne semble pas être capable de le faire fonctionner.
Oh, et le site est en finnois, mais ce n'est pas très difficile à comprendre, les deux champs de texte et un bouton. La première est pour le nom d'utilisateur, le second mot de passe et le bouton est le bouton se connecter.
Pour le moment mon journal dans le code est comme suit:
var Browser = require("zombie");
browser = new Browser();
browser.visit("https://www.nordnet.fi/mux/login/startFI.html?cmpi=start-loggain",
function () {
//Here I check the title of the page I'm on.
console.log(browser.text("title"));
//Here I fill the needed information.
browser.document.getElementById("input1").value ="MYUSERNAME";
browser.document.getElementById("pContent").value ="MYPASSWORD";
//And here it fails. I try to submit the form in question.
browser.document.getElementById("loginForm").submit();
setTimeout(function () {
//This is here to check that we've submitted the info and have been
//redirected to a new website.
console.log(browser.text("title"));
}, 2000);
});
Maintenant je sais que je devrait peut-être avoir utilisé zombie "remplir" la méthode, mais j'ai essayé avec pas de chance alors, j'ai essayé quelque chose de nouveau.
Tout ce que j'obtiens c'est une erreur:
Y:\IMC\Development\Web\node_modules\zombie\lib\zombie\forms.js:72
return history._submit(_this.getAttribute("action"), _this.getAttribute(
^
TypeError: Cannot call method '_submit' of undefined
Maintenant, si je me connecte que browser.document.getElementById("loginForm")
elle n'a évidemment de trouver la forme, mais hélas, il ne l'aime pas pour une raison quelconque.
J'ai aussi essayé le "classique" avec zombie, qui consiste à utiliser que le bouton de connexion sur la page web et en l'appuyant. Le problème est qu'il n'est pas vraiment un bouton, juste une image qui a un lien attaché à elle, et c'est tout à l'intérieur <span>
. Et je n'ai aucune idée de comment je pouvez "cliquer" sur le bouton.
Il n'a pas d'ID, donc je ne peux pas l'utiliser, alors j'ai essayé d'utiliser le texte sur elle, mais parce qu'il a des trémas sur elle je peux pas le faire fonctionner. S'échapper de la ä avec /344 seulement donné une erreur:
throw new Error("No BUTTON '" + selector + "'");
^
Error: No BUTTON 'Kirjaudu sisään'
Alors oui, ça n'a pas marché, mais je n'ai aucune idée de pourquoi il ne reconnaît pas échappé tréma correctement.
C'est ma première question, la seconde est un mineur, mais j'ai bien pourquoi ne pas demander ici aussi maintenant que j'ai écrit ce texte.
Si je reçois tout cela fonctionne, je peux en quelque sorte de copie du cookie que ce journal dans les me donne, et de l'utiliser dans mon YQL pour la capture d'écran? Fondamentalement, je suis en train de gratter de la bourse des valeurs, mais sans le connecter les valeurs sont 15min différé, ce qui n'est pas trop mal, mais j'aimerais qu'il soit vivre de toute façon.
OriginalL'auteur Petri Mustonen | 2012-08-23
Vous devez vous connecter pour publier un commentaire.
Après quelques tests à l'aide de zombie je suis venu à la conclusion qu'il est encore trop tôt pour l'utiliser pour le sérieux de test. Néanmoins, je suis venu avec un exemple de formulaire de soumission (à l'aide d'ordinaire
.submit()
méthode).Comme vous pouvez le voir, l'idée est d'utiliser construire
browser.wait().then(...)
après la soumission du formulaire, sinonbrowser
objet va encore se référer à la page initiale (celle passée en argument àvisit
méthode). Remarque: histoire de l'objet va contenir l'adresse de la page que vous avez soumis votre formulaire, même si vous n'avez pas à attendre que la page se charge - il me troublait un peu, comme j'étais sûr que je devrais déjà voir la nouvelle page.Modifier:
Pour votre site, le zombie semble fonctionner ok (j'ai pu présenter le formulaire et obtenir des "mauvais login ou mot de passe" alerte). Il y a quelques erreurs JS, mais de zombie n'est pas concerné avec eux (vous devez déboguer ceux toutefois à voir si le script de fonctionner pour les utilisateurs réguliers). De toute façon, voici le script que j'ai utilisé:
Comme note de côté: alors que j'étais en train de chercher du travail exemple j'ai essayé de l'utilisateur pages suivantes (tous ont échoué pour des raisons différentes):
Conclusion: Il n'est pas si facile à force de zombie dans l'accomplissement de votre travail, après tout... 🙂
Par "ce morceau de code" tu veux dire que le code de mon exemple? De toute façon poster un lien vers votre page si elle est disponible au public en général et je vais essayer de parcourir avec zombie 🙂
Oui je l'ai fait dire que votre code. Voici la page si vous êtes intéressé: nordnet.fi/mux/login/startFI.le html?cmpi=départ-loggain C'est en finnois, mais la page n'est pas trop compliqué. Nom d'utilisateur et le mot de passe et un bouton pour se connecter :p
Pas de soucis - google translate à la rescousse 😉 je vais essayer de zombie votre site plus tard aujourd'hui.
J'ai mis à jour ma réponse.
OriginalL'auteur WTK