2017-02-03 1 views
1

bonjour je fais un programme d'automatisation. le début du programme est de se connecterJe ne peux pas définir la valeur de la zone de texte Web en utilisant wpf

et est ici la balise html

<form name="LoginForm" method="post" action="https://admin"> 
    <input type="hidden" name="redirectURL" value="Admin/"> 
    <input type="hidden" name="reason" value="LOGIN_REQUIRED"> 

    <fieldset style="padding: 5px 5px 5px 5px;"> 
    <table style="width: 100%"> 
     <tr> 
      <th style="text-align: left"> 
       <label for="login"> 
       E-mail Address 
       </label> 
      </th> 
      <td style="width: 65%"> 
       <input type="text" name="login" maxlength="80" value="" id="login" style="width:98%"> 
      </td> 
     </tr> 
     <tr> 
      <td></td> 
      <td> 
       <div class="field_error" style="clear: left;"> 

       </div> 
      </td> 
     </tr> 
     <tr> 
      <th style="text-align: left"> 
       <label for="password"> 
       Password 
       </label> 
      </th> 
      <td> 
       <input type="password" name="password" maxlength="64" value="" style="width:98%"> 
      </td> 
     </tr> 
     <tr> 
      <td></td> 
      <td> 
       <div class="field_error" style="clear: left;"> 

       </div> 
      </td> 
     </tr> 
    </table> 

    <hr style="visibility: hidden;"/> 

    <div style="width: 60px; margin-left: auto; margin-right: auto"> 
     <input type="submit" name="action" value="Log In" style="text-align:center;" class="generic_button"> 
    </div> 
    </fieldset> 
</form> 

mais pourquoi je ne peux pas définir la valeur du champ de saisie de mot de passe.

im en utilisant WPF et awesomium

je peux définir la valeur textbox du nom d'utilisateur, mais je ne peux pas définir la valeur du mot de passe

voici mon code

wb.ExecuteJavascript(String.Format("document.querySelector('#login').value = '{0}'", txtUsername.Text)); 
wb.ExecuteJavascript(String.Format("document.querySelector('#password').value = '{0}'", txtPassword.Text)); 

comment peut je définis la valeur du mot de passe? il n'utilise pas d'identifiant? Je vous remercie. il utilise l'attribut name

i essayé d'utiliser le construit en webbrowser et je peux le faire fonctionner

Voici le code:

System.Windows.Forms.HtmlElementCollection elems = wb.Document.GetElementsByTagName("input"); 
       foreach (System.Windows.Forms.HtmlElement elem in elems) 
       { 
        String nameStr = elem.GetAttribute("name"); 
        if (nameStr != null && nameStr.Length != 0) 
        { 
         if (nameStr == "login") 
         { 
          elem.SetAttribute("value", txtUsername.Text); 
         } 
         if (nameStr == "password") 
         { 
          elem.SetAttribute("value", txtPassword.Text); 
         } 
        } 
       } 

Edit: Solution: i changé le awesomium à geckofx. et convertir le code ci-dessus avec le code de geckofx

Répondre

2

Essayez cette

wb.ExecuteJavascript(String.Format("document.querySelector('input[name=\"password\"]').value = '{0}'", txtPassword.Text)); 

jsFiddle se trouve ici:

https://jsfiddle.net/L4yrjfmz/

+0

J'ai essayé votre code, mais cela ne fonctionne toujours pas. Je ne me fais pas d'erreur. il n'ajoute pas non plus de valeur au mot de passe –

+0

Il semble fonctionner sur ce JsFiddle: https://jsfiddle.net/L4yrjfmz/ Également vu que name = 'mot de passe' devrait être name = \ "mot de passe \" (peut-être que c'est le problème dans mon code) –

+0

Le code mis à jour que vous avez posté fonctionne. Merci –

3

Regardez l'entrée de votre mot de passe:

<input type="password" name="password" maxlength="64" value="" style="width:98%"> 

n'a pas d'attribut id, dans les sélecteurs css a # préfixe se réfère à l'attribut id, dans votre cas, vous pouvez utiliser l'un des sélecteurs suivants pour l'entrée du mot de passe:

input[type=password] 

input[name=password] 
+0

cela ne fonctionne pas. mais quand j'utilise le contrôle webbrowser du studio visuel. Ça marche –