Un password sur un TextBox pour webBrowser

Résolu
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016 - 9 juin 2014 à 00:51
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016 - 10 juin 2014 à 01:11
Yop tout le monde !

Je cherche à envoyer un mot de passe vers un formulaire d'inscription, j'arrive à remplir un champ d'un webBrowser par le biais d'un textBox.

Mon problème est que le text est envoyer en tant que text dans le champ du webBrowser, hors il faudra que sa value soit =password malheureusement je n'y arrive pas voici un screen de ce qu'il se passe dans le webBrowser lorsque je remplis le 1er par le biais d'un textBox

http://prntscr.com/3qxhcr

Comme vous le voyez le 1er champ n'est pas comme le deuxième, lorsque je valide la création du compte comme ça, le champ s'efface et affiche une erreur demandant un mot de passe.

Voici mon code, j'ai déjà essayer de remplacer "value" par "password" ou même par "text" ça n'a rien changer, comment puis-je faire ?

HtmlDocument document6 = this.webBrowser1.Document; document6.GetElementById("account_password").SetAttribute("value", textBox2.Text);


Merci d'avance !
A voir également:

5 réponses

jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 01:07
Bonjour,

Comme toujours pour ce genre de question... il serait bien que tu nous mettes le code source de la page HTML ( enfin.. les inputs que tu cherches à manipuler).

essaies aussi de voir si le site ne comporte pas un script javascript qui se déclancherai lors de la saisi du second input (un truc qui génèrerait une sorte d'encodage...)

Parce que normalement... le second input est de type "password" gère le texte de la même manière que les autres... à l'exception que lors de l'affichage il le masque.

Tu peux aussi nous montrer le code avec lequel tu rempli le premier input ?

Et puis tu peux aussi faire une "relecture" de tes champs pour voir s'ils sont correctement remplis :
HtmlDocument document6 = this.webBrowser1.Document; 
document6.GetElementById("account_password").value=textBox2.Text;

string test = document6.GetElementById("account_password").value;

0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
9 juin 2014 à 09:28
HtmlDocument document6 = this.webBrowser1.Document; document6.GetElementById("account_password").SetAttribute("value", textBox2.Text);

Est le code du champ qui remplis la case password mais qui ne le masque pas, voici les divers infos que j'ai pu récupérer sur le site en inspectant :

http://prntscr.com/3r1sxf

Sur la deuxième case voici le code il n'y à que l'ID et la textBox qui change et lui affiche correctement les caractères masqués dans le webBrowser :

HtmlDocument document7 = this.webBrowser1.Document; document7.GetElementById("confirmPasswordField").SetAttribute("value", textBox3.Text);

Ensuite j'ai inspecter l'élément de la deuxième case et sur la deuxième case il y'a un javascript,

http://prntscr.com/3r1tjy

C'est bizarre car il n'y à que celui là qui ne cache pas le texte, dans l'input du 1er ont voit que le type est "password" seulement si je change " value " par " password " rien ne s'affiche, j'espère que tu aura la solution à mon problème car il ne me manque que ça pour finir mon programme si ça fonctionne pas je suis dégoûter ...

Merci d'avance, si ta besoin d'autre infos dit le moi ^^
0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
9 juin 2014 à 15:42
J'ai beau chercher je trouve pas comment c'est faisable, peut-être qu'on pourrait taper ça lettre par lettre comme ci c'étais fais avec un code qui simule les touches du clavier ?
0
jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 15:53
Comme tu as pu le voir, il y a un script javascript qui se déclenche sur la seconde textbox.

http://www.commentcamarche.net/contents/573-javascript-les-evenements

Cette action ( blur) se passe lorsque l'élément perd le focus..
mais lorsque tu écris dedans directement ...il ne prend ni ne perd le focus...
Il faut donc que tu lui donne le focus, puis que tu lui enlève (en le mettant sur un autre élement de la page) une fois que tu as saisis ton texte.

http://www.w3schools.com/jsref/met_html_focus.asp
0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
9 juin 2014 à 16:24
N'y à t'il pas un moyen de copier directement le contenu de la deuxième case qui elle à le javascript vers la première case ?

Si c'est possible sa serait plus simple, l'utilisateur remplis la case de confirmation et avec l'action de copier/coller, ça remplis la première tout en bénéficiant du javascript ?
0
jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 16:43
la deuxième case qui elle à le javascript vers la première case
Le script javascript ne fait pas de "lien" entre les deux cases.
Au moment où il perd le focus il récupère le contenu de la case 1 et vérifie avec sa valeur (case 2 ) pour s'assurer que les deux password sont identiques.

On est bien d'accord que ton programme ne fait que "piloter" une page internet .. ?!?
Et donc.. ton programme ( c#) ne joue aucun rôle la dedans... c'est du "pur" fonctionnement interne au site.....

Donc :
Tu remplis la case 1
Tu remplis la case 2 (avec le meme password que dans la case 1)
Tu "cliques" ailleurs dans ton document => tu mets le focus sur un autre élément.
Et là... normalement le script javascript se déclenche.



0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
9 juin 2014 à 17:37
Déjà merci de ta patience envers moi.

Ok, j'ai bien compris ce que tu voulais me faire comprendre dans la case 1 qu'il y'est les lettres ou les ****** n'a pas d'importance ce qui compte c'est que le JS se déclenche pour valider les deux cases.

Mon programme en c# envoie juste des données dans des champs et appuie sur le bouton suivant du webBrowser ça reste du pilotage oui.

J'ai fais des test et je suis toujours au même résultat pour donner le focus à un autre élément il faut simplement cliquer sur un autre élément ?

Avec ce code est-ce que ça donne le focus à un autre élément ?

webBrowser1.Document.GetElementById("account_loginNameFieldInput").InvokeMember("click");

Honnêtement j'ai du mal à comprendre comment utiliser les éléments pour déclencher ce foutu Javascript déjà que je débute dans le C# alors mêlé les deux ensemble :s
0
jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 18:11
dans la case 1 qu'il y'est les lettres ou les ****** n'a pas d'importance ce qui compte c'est que le JS se déclenche pour valider les deux cases.
Oui

pour donner le focus à un autre élément il faut simplement cliquer sur un autre élément ?
Oui (si on clique vraiment avec la souris) .... mais le mieux quand on manipule le DOM c'est de lui donner le focus par code.

Je t'ai donné des liens précédements... en javascript (c'est ce que tu fais quand tu remplis tes champs..tu utilises du JS en quelques sortes..) tu as une méthode .focus().

Avec ce code est-ce que ça donne le focus à un autre élément ?
Non. Ce code appelle la méthode "click" du bouton...; ça ne clique pas vraiment dessus...ça ne donne donc pas le focus.


Mais tu peux aussi (je viens d'y penser en voyant le code de ton bouton valider) que tu peux "déclencher" le script par code.
http://msdn.microsoft.com/fr-fr/library/cc491132%28v=vs.110%29.aspx

http://www.codeproject.com/tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro.aspx

Donc, après avoir rempli les deux cases.... tu fais un truc du genre :
object[] args = { textBox2.Text, textBox3.Text};
webBrowser1.Document.InvokeScript("validatePasswordAJAX",args);

Ca devrait lancer le contrôle des champs password.


Une autre solution (si ça ne fonctionne toujours pas) est de regarder plus en détail le code source de la page web;.
Je suppose que lorsque tu cliques sur le bouton pour valider qu'il vérifie dans la page si un champ (de type hidden) ne contiendrait pas une certaine valeur ( un booleen par exemple qui dit : OK les password sont identiques)....
L'ideal serait de récupérer le code javascript de cette page et de regarder ce que fait cette fonction exactement...



0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
Modifié par Ulrichleboss le 9/06/2014 à 22:25
J'ai essayer tout ce que j'ai trouver mais bon en vain j'y comprend rien :s

Par contre j'ai trouver une technique qui active le Javascript mais là je vais avoir besoin de ton aide, apparemment c'est beaucoup plus simple que le Javascript :p

Quand je lance le tool et que je tape une lettre ou autre directement dans le champ du webBrowser, le Javascript fonctionne et masque la lettre, ensuite j'ai effacer la lettre et j'ai fais la manipulation habituel avec la textBox et là ça à fonctionner, le textbox était masquer et j'ai pu valider la page, du coup je me demande si il y'a pas moyen de émuler une touche de clavier + émuler une autre touche pour effacer ?

Sa résoudrais mon problème enfaite ça x)

J'ai vu des truc du genre Keypress mais je ne sais pas comment les utiliser dans mon code

            HtmlDocument document6 = this.webBrowser1.Document; document6.GetElementById("account_password").SetAttribute("value",textBox2.Text);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 22:46
J'ai essayer tout ce que j'ai trouver mais bon en vain j'y comprend rien
Tu as testé avec ce que je t'ai indiqué ?
Mettre le focus à ton input, le remplir, mettre le focus sur le bouton avant de le "cliquer" ??

Ou as tu essayé avec la méthode InvokeScript ?

Si tu as testé... montre ton code qu'on essai de voir ce qui n'a pas fonctionné..
0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
9 juin 2014 à 22:59
J'ai essayer avec le InvokeScript, l'autre pour le focus j'ai essayer plein de combinaison pendant 2 heures et comme j'y comprend rien du tout en java j'arrive surement pas à faire le focus comme il faut c'est pas gagner ...
0
jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 23:05
Pour le focus, à mon avis ça peut donner quelque chose du genre :

HtmlDocument document7 = this.webBrowser1.Document; 
document7.GetElementById("confirmPasswordField").focus();
document7.GetElementById("confirmPasswordField").SetAttribute("value", textBox3.Text);

//On met le focus sur le bouton
webBrowser1.Document.GetElementById("account_loginNameFieldInput").focus();


il n'empeche que :
J'ai essayer avec le InvokeScript, l'autre pour le focus
Sans nous montrer ton code;... on ne pourra rien pour toi.
Surtout que nous n'avons pas accès à la page que tu essaies de manipuler...alors comment veux tu que l'on puisse tester ??
On ne peut QUE te donner des pistes !!!
0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
Modifié par jordane45 le 10/06/2014 à 00:57
J'ai essayer le code que tu ma donner malheureusement ça ne déclenche pas le javascript

C'est sur cette page ;

https://account.sonyentertainmentnetwork.com/reg/account/create-account!input.action?service-entity=psn

Et le Invoke script c'est celui que tu m'a filer :

object[] args = { textBox2.Text, textBox3.Text};
webBrowser1.Document.InvokeScript("validatePasswordAJAX",args);
0
jordane45 Messages postés 37726 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2023 342
9 juin 2014 à 23:37
Le fonction
validatePasswordAJAX($('input#account_loginNameFieldInput').val(), $(this).val(), "account_passwordField");

attend 3 arguments
dans mon exemple je n'en ai mis que deux..

Peut être que comme ça ça passera mieux :
HtmlDocument doc = this.webBrowser1.Document; 
object[] args = { textBox2.Text, textBox3.Text,"account_passwordField"};
doc.InvokeScript("validatePasswordAJAX",args);
0
Ulrichleboss Messages postés 502 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 14 mai 2016
Modifié par Ulrichleboss le 9/06/2014 à 23:56
Apparemment la fonction s'enclenche mais c'est bizarre car il me dit juste en dessous de la 1er case '' Le mot de passe ne doit pas être identique à l'ID de connexion " sous entendus donc que le script prend l'ID de l'account comme mot de passe
0
Rejoignez-nous