2017-02-03 28 views
1

你好我正在做一個自動化程序。節目的開始是登錄我無法使用wpf設置web文本框的值

,這裏是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> 

但爲什麼我不能設置密碼文本框的值。

IM使用WPF和awesomium

我可以設置用戶名的文本框的值,但我不能設置密碼

這裏的價值是我的代碼

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

怎麼能我設置密碼的值?它不使用ID?謝謝。它使用name屬性

我嘗試使用內置的網頁瀏覽器,我可以讓它工作

這裏是代碼:

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); 
         } 
        } 
       } 

編輯: 解決方案:我改變了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/ 也看到名稱='密碼'應該是名稱= \「密碼\」(也許多數民衆贊成在我的代碼中的問題) –

+0

您發佈的更新代碼的作品。謝謝 –

3

看看你的密碼輸入:

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

它沒有id屬性,在css選擇器中a #前綴是指id屬性,你的情況,你可以使用下列任一選擇器的密碼輸入:

input[type=password] 

input[name=password] 
+0

它不起作用。但是當我使用visual studio的web瀏覽器控制。有用 –