我有一个我为工作创建的程序来跟踪信息。我们从各种 Intranet 站点获取此信息。我想在我的程序中包含一个表单,它本质上是一个定制的网络浏览器,让我可以更轻松地浏览这些网站。这对我来说是一个学习项目,所以请原谅我的经验不足。
对于这个问题,我正在寻找一种方法,在使用浏览器控件加载页面后,我可以从存储在字符串中的凭据登录到该页面。我无权访问我试图输入此信息的站点的 HTML 代码,并且已经看到了许多关于如何通过 GetElementId 执行此操作的教程,但是在使用 Firebug 之后,我发现我需要输入的两个文本框都没有一个 id(无论如何我都能看到)。该网站从未改变,我确实考虑过使用 GetElementFromPoint,但不确定如何以这种方式进行,而且它似乎不是最优的。GetElementsByTagName 似乎是最好的方法,但不确定如何实现代码。
这是我能够从萤火虫获得的两个元素的信息。
用户名文本框:
<input type="text" name="j_username" size="12" onblur="this.value=this.value.toLowerCase(); setUserIdCookie();" click="this.value=this.value.toLowerCase();" onkeyup="this.value=this.value.toLowerCase();">
密码文本框:
<input type="password" onkeypress="checkCapsLock( event )" name="j_password" size="12">
所以我需要例如从我的 Winform 传递usernameString
给 j_username,然后passwordString
传递给 j_password,然后单击 <input type="submit" name="submit" value="Login">
Web 控件中的按钮。如果我能从这个站点了解如何解决这个问题,我应该能够从中学到足够的知识,以便在其他站点中实施。
提前感谢您的帮助,如果需要任何其他信息,请告诉我。
完整的 HTML 代码:
<form method="POST"action="j_security_check" name="login">
<table border="0"width="30%"cellspacing="3"cellpadding="2">
<tr>
<td class="default"><b>Login</b></td>
<td class="default"><input onkeyup="this.value=this.value.toLowerCase();"
click="this.value=this.value.toLowerCase();"
onblur="this.value=this.value.toLowerCase(); setUserIdCookie();"
type="text"size="12" name="j_username"></td>
</tr>
<tr>
<td class="default"><b>Password</b></td>
<td class="default"><input type="password" size="12"
name="j_password"onKeyPress="checkCapsLock( event )"></td>
</tr>
<tr>
<td colspan="2" align="center"><p class="default">
<inputtype="submit"value="Login"name="submit"></td>
</tr>
</table>
</form>
编辑
我找到了一种输入框的方法
var x = webBrowser1.Document.All.GetElementsByName("j_username");
x[0].InnerText = (usernameString);
var y = webBrowser1.Document.All.GetElementsByName("j_password");
y[0].InnerText = (passwordString);
但是我无法弄清楚如何单击登录按钮