2017-02-03 12 views
1

привет, я делаю программу автоматизации. начало программы для входаЯ не могу установить значение текстового поля в сети, используя wpf

и вот 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> 

, но почему я не могу установить значение пароля текстовое поле.

им с помощью WPF и Awesomium

я могу установить значение текстового поля имени пользователя, но я не могу установить значение пароля

вот мой код

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

как можно Я устанавливаю значение пароля? он не использует идентификатор? Спасибо. это использовать имя атрибута

я попытался с помощью встроенного веб-браузера, и я могу заставить его работать

здесь код:

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: Решение: я изменил Awesomium к geckofx. и преобразовывать код, приведенный выше с кодом geckofx

ответ

2

Попробуйте

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

JSFiddle можно найти здесь:

https://jsfiddle.net/L4yrjfmz/

+0

Я пробовал ваш код, но все же он не работает. я не даю мне ошибку. он также не добавляет значения для пароля –

+0

Это похоже на работу с JsFiddle: https://jsfiddle.net/L4yrjfmz/ Также видно, что имя = 'password' должно быть name = \ "password \" (возможно, это проблема в моем коде) –

+0

Обновленный код, который вы опубликовали. Спасибо –

3

Посмотрите на свой ввод пароля:

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

он не имеет атрибута id, в селекторах css aПрефиксотносится к атрибуту id, в вашем случае вы можете использовать любой из следующих селекторов для ввода пароля:

input[type=password] 

input[name=password] 
+0

не работает. но когда я использую управление веб-браузером визуальной студии. оно работает –