Windows 窗体应用程序 - 在中操作输入元素WinForm WebBrowser
虽然我熟悉HttpWebResponse
/HttpWebRequest
登录到一个网站,但我现在通过使用 mshtml 库尝试它并发现了一些奇怪的行为,我想看看其他人是否可以在这里帮助我..
我有一个带有 java 后端的 HTML 登录页面,其中包含一个Username
字段、一个Password
字段和一个Button
.
逻辑非常基本,我构建了一个带有内置 webbrowser 的 winform 应用程序。在Document_Completed
事件中,我使用以下代码输入我的设置并单击按钮。
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser.Url.ToString() == @"MyWebPage/signin")
{
HTMLDocument hdc = new HTMLDocumentClass();
hdc = (HTMLDocument)webBrowser.Document.DomDocument;
IHTMLElement elb = hdc.getElementById("login_button");
IHTMLInputElement elu = (IHTMLInputElement)hdc.getElementById("username");
IHTMLInputElement elp = (IHTMLInputElement)hdc.getElementById("password");
try
{
elu.value = "MyID";
elp.value = "MyPwd";
elb.click();
}
catch { }
}
}
除了此代码非常快速且没有错误处理之外,它应该可以解决问题,而且它确实部分......
有两种情况:
我启动该工具,它会加载网页。
- 该工具会正确填充 UserID 字段和 Password 字段
- 该工具无法单击按钮
我手动单击按钮,我已登录,我单击注销,我回到登录页面
- 我立即再次登录,工具输入信息
- 该工具也会立即单击该按钮。
有没有人可以解释我为什么会发生这种情况以及我如何使用当前设置解决这个问题(因此不使用HttpWebRequest
)。我看不出在启动时加载页面或在注销后被重定向之间的区别,但显然那里有区别,或者我做错了什么。
非常感谢您对此事的任何反馈。
谢谢,凯文
编辑:
我Button
在我的 Windows 窗体中添加了一个与下面相同的后端代码,以便单击网页上的按钮,这非常有效。
我在事件中触发了单击此按钮,webBrowser_Completed
但它不起作用。出于某种原因,我添加到webBrowser_DocumentCompleted
事件中的所有内容都不允许我触发WebBrowser
控件中按钮的单击事件。一旦整个事件完成,如果我尝试触发它,它会起作用,但我想自动化这个..有什么建议吗?