我无法使用 wpf 设置 Web 文本框值
i can't set web textbox value using 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));
如何设置密码值?它不使用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
的代码转换上面的代码
试试这个
wb.ExecuteJavascript(String.Format("document.querySelector('input[name=\"password\"]').value = '{0}'", txtPassword.Text));
JSFiddle 可以在这里找到:
查看您的密码输入:
<input type="password" name="password" maxlength="64" value="" style="width:98%">
它没有 id 属性,在 css 选择器中,一个 #
前缀指的是 id 属性,在您的情况下,您可以使用以下任何选择器来输入密码:
input[type=password]
input[name=password]
你好我正在做一个自动化程序。程序的开始是登录
这里是 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
的代码转换上面的代码试试这个
wb.ExecuteJavascript(String.Format("document.querySelector('input[name=\"password\"]').value = '{0}'", txtPassword.Text));
JSFiddle 可以在这里找到:
查看您的密码输入:
<input type="password" name="password" maxlength="64" value="" style="width:98%">
它没有 id 属性,在 css 选择器中,一个 #
前缀指的是 id 属性,在您的情况下,您可以使用以下任何选择器来输入密码:
input[type=password]
input[name=password]