Skip to main content
 首页 » 编程设计

c#之我无法使用 wpf 设置 Web 文本框值

2024年01月31日31itcoder

你好,我正在做一个自动化程序。程序的开始是登录

这里是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)); 

如何设置密码值?它不使用ID?谢谢。它使用名称属性

我试过使用内置的网络浏览器,我可以让它工作

代码如下:

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 的代码

请您参考如下方法:

查看您的密码输入:

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

它没有 id 属性,在 css 选择器中,# 前缀指的是 id 属性,在您的情况下,您可以使用以下任何选择器来输入密码:

input[type=password] 
 
input[name=password]