我在C#中遇到了一个非常奇怪的问题:
首先,我使用WebBrowser控件和导航方法进行浏览。 wb_email.Navigate( “https://registrierung.web.de”);
现在我可以毫无问题地更改htmlelements的innerText。 wb_email.Document.GetElementById(“id4”)。InnerText =“Alexander”;
但是当我重新加载页面时,只需使用带有相同网址的导航方法, 我得到一个null异常。似乎他找不到元素。
所以我在Firefox上使用了一个检查器来查看重新加载后htmlelement是否真的发生了变化。 但只有网址正在改变,htmlelements都是一样的。
我做错了什么?
答案 0 :(得分:1)
您只是在显示的页面中更改DOM。当您重新加载页面时,WebBrowser
实例将再次从服务器刷新DOM并丢失您的更改。
WebBrowser
类不是为编辑自身内部的渲染页而设计的,因为它基本上只是嵌入式Internet Explorer实例的包装器。
答案 1 :(得分:0)
在访问任何元素之前,请确保网站已完成加载。像:
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// Access elements here
}