Un password sur un TextBox pour webBrowser [Résolu]

Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 9 juin 2014 à 00:51 - Dernière réponse : Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention
- 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 !
Afficher la suite 

24 réponses

Répondre au sujet
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 9 juin 2014 à 01:07
0
Utile
4
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;

Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 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 ^^
Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 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 ?
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 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
Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 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 ?
Commenter la réponse de jordane45
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 9 juin 2014 à 16:43
0
Utile
1
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.



Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 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
Commenter la réponse de jordane45
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 9 juin 2014 à 18:11
0
Utile
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...



Commenter la réponse de jordane45
Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - Modifié par Ulrichleboss le 9/06/2014 à 22:25
0
Utile
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);
Commenter la réponse de Ulrichleboss
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 9 juin 2014 à 22:46
0
Utile
14
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é..
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 10 juin 2014 à 00:29
regardes s'il n'y a pas d'autres fonctions javascripts qui se lanceraient sur les différents input que tu remplis... et si oui...utilises la même méthode que celle que je viens de te donner.
Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 10 juin 2014 à 00:33
Dac je vais checker ça !
Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 10 juin 2014 à 00:52
Ya du Javascript dans les case day month et year mais c'est simplement des code pour la couleur

$(document).ready(function() {
var current = $('#dayDropDown').val();
if (current != '0') {
$('#dayDropDown').css('color','#000000');
} else {
$('#dayDropDown').css('color','#A9A9A9');
}
$('#dayDropDown').change(function() {
var current = $('#dayDropDown').val();
if (current != '0') {
$('#dayDropDown').css('color','#000000');
} else {
$('#dayDropDown').css('color','#A9A9A9');
}
});
});

Ensuite y'a un Javascript pour la région, mais elle est déjà sélectionner par défaut, et j'ai jamais eu aucun message d'erreur dessus

Voici le code quand même on sait jamais


$("select#regInput_Country").change(function(){
$("#mainRegistrationForm #notificationSettingsList #checkbox_1").attr("name","");
$("#mainRegistrationForm #notificationSettingsList #checkbox_2").attr("name","");

getLanguagesForCountryAJAX($(this).val(),"regInput_Language");
});

J'ai essayer le code en l'adaptant dessus mais ça n'a rien changer je pense pas que celui ci fasse interférence

HtmlDocument doc1 = this.webBrowser1.Document;
object[] args1 = { textBox1.Text, "account_loginNameFieldInput" };
doc.InvokeScript("getLanguagesForCountryAJAX", args1);

Niveau Javascript c'est tout y'a rien d'autre dessus
jordane45 20877 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 mai 2018 Dernière intervention - 10 juin 2014 à 01:05
Et je rentre une adresse au pif : test@live.fr
Tu as vu ce qui se passe si tu saisie ce compte "manuelement" sur le site ??

Cette adresse e-mail est déjà associée à un autre compte. Si vous avez créé un compte sur un système PlayStation®, vous pouvez l'utiliser pour vous connecter.

Ce message apparait via le script :
$("input#account_loginNameFieldInput").change(function(){
validateLoginNameAJAX($(this).val(), "account_loginNameField", "createAccount", "$external", "liquid");
});
$(document).ready(function(){
if($("input#account_loginNameFieldInput").val() != "" && !$("label#account_loginNameFieldError").is(':visible')){
validateLoginNameAJAX($("input#account_loginNameFieldInput").val(), "account_loginNameField", "createAccount", "$external", "liquid");
}
});


...


Enfin bon... ta question initiale est résolue.
Il te faut donc clore le sujet.

Si tu rencontres d'autres soucis... il te faudra ouvrir une nouvelle discussion. ^^

Mais maintenant que tu sais comment manipuler les éléments d'une page html, y déclencher ses scripts...ce n'est plus qu'une question de "compréhension" du code de la page en question... plus un souci de csharp. ;-)
Ulrichleboss 511 Messages postés dimanche 20 juillet 2008Date d'inscription 14 mai 2016 Dernière intervention - 10 juin 2014 à 01:11
Dac merci à toi ^^ et l'adresse c'est une adresse au pif que je met, j'ai mis celle là pour un exemple je me doute bien qu'elle est déjà utiliser.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.