C# 不一致的原因是什么-HTMLInputElement mshtml
我的要求-我以编程方式打开Internet Explorer的实例。然后,我获取HTMLDocument并查找输入字段(textbox),然后设置其值C# 不一致的原因是什么-HTMLInputElement mshtml,c#,mshtml,C#,Mshtml,我的要求-我以编程方式打开Internet Explorer的实例。然后,我获取HTMLDocument并查找输入字段(textbox),然后设置其值 HTMLDocument oDoc = new mshtml.HTMLDocumentClass(); oDoc = (HTMLDocument)oBrowser.Document; HTMLInputElement txtbox1 = (HTMLInputElement)oDoc.all.item("login",0)
HTMLDocument oDoc = new mshtml.HTMLDocumentClass();
oDoc = (HTMLDocument)oBrowser.Document;
HTMLInputElement txtbox1 = (HTMLInputElement)oDoc.all.item("login",0);
txtbox1.setAttribute("value", "test_user_name", 0);
//txtbox1.value = "test_user_name";
在查找输入字段之前,我的代码工作正常。问题出在我上面发布的代码的某个地方。获取HTMLDocument对象,然后查找名为“login”的HTMLInputElement。在这里,我面临一个不一致性-文本框有时无法识别,因此当它到达txtbox1.SetAttribute
或txtbox1.value
时,会抛出一个NullReferenceException
。但是,这种情况并不总是发生。有时不会抛出异常,代码工作正常。
我已经尝试过通过代码进行调试,但是当我通过代码进行调试时,错误永远不会出现
我无法找出原因是什么?是什么导致这种不一致?有什么想法吗?您确定代码运行时页面已完全加载吗?如果没有,DOM可能在执行代码时不包括您的控件 您应该添加webBrowser1.DocumentCompleted事件,然后在已完成的事件处理程序中执行代码,以确保DOM已完全创建 我还建议使用System.Windows.Forms中的WebBrowser控件,而不是axwebbrowser和mshtml。也就是说,如果您在自己的窗口中托管浏览器。我过去在mshtml方面遇到过一些问题,特别是与事件挂钩有关的问题
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted)
.
.
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var doc = webBrowser1.Document;
var txtBox1 = doc.All["login"];
txtBox1.SetAttribute("value", "test_user_name");
}