Xik*_*yoX 6 html c# mshtml winforms
Windows窗体应用程序 - 操作输入元素 WinForm WebBrowser
虽然我熟悉HttpWebResponse/ HttpWebRequest登录网站,但我现在正在尝试使用mshtml库并发现一些奇怪的行为,我想看看是否有其他人可以帮助我在这里..
我有一个HTML登录页面,其中包含一个带有Username字段,Password字段和a 的java后端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 { }
}
}
Run Code Online (Sandbox Code Playgroud)
除了这个代码非常快,没有错误处理,它应该做的伎俩,它确实,部分..
有两种情况:
我启动该工具,它加载网页.
我手动点击按钮,我登录,点击退出,我回到登录页面
是否有人能够解释我为什么会发生这种情况以及如何通过当前设置(因此不使用HttpWebRequest)来解决这个问题.我没有看到在启动时加载页面或在注销后重定向之间的区别,但显然存在差异或我做错了什么.
对此事的任何反馈都非常感谢.
谢谢,凯文
我Button在我的Windows窗体中添加了一个基于下面相同的后端代码,以便单击网页上的按钮,这非常有效.
我在webBrowser_Completed事件中触发了单击此按钮,但它不起作用.出于某种原因,我添加到webBrowser_DocumentCompleted事件中的所有内容都不允许我触发WebBrowser控件中按钮的click事件.一旦整个事件完成,如果我然后尝试触发它它有效,但我想自动化这个..任何建议?
小智 3
这可能是一个长期的尝试,也不是最优雅的解决方法,但是如何让后台工作人员在DocumentCompleted事件中运行一秒钟,然后触发您从单独的线程中单击的按钮。这可能会变得自动化。由于这将从不同的线程运行,因此请记住,您可能必须调用某些控件,因此这可能是此解决方法的另一个缺点。
如果这不起作用,那么正如 Regfor 之前建议的那样,Watin.org 可以帮助您。