I have an ASP.NET page and some custom class that fetches a specified webpage and returns that page body back.
protected String GetHtml()
{
Thread thread = new Thread(new ThreadStart(GetHtmlWorker));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
return docHtml;
}
protected void GetHtmlWorker()
{
using (WebBrowser browser = new WebBrowser())
{
browser.ScriptErrorsSuppressed = true;
browser.Navigate(_url);
// Wait for control to load page
while (browser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
docHtml = browser.DocumentText;
}
}
But what I need is to get DOM HTML instead of the page source because I do some extra operations over DOM by jQuery.
Here is one solution I found to get to the rendered HTML(DOM) after javascript was run:
Place a WebBrowser control named webBrowser1 on the Form of class Form1.
[Form1.cs[Design]]
Then for code use:
[Form1.cs]
Change the webBrowser1.Navigate(“http://localhost:6489/Default.aspx“) parameter in Form1_Load to the page whose DOM after being processed by javascript you wish to obtain.
You can access the modified DOM in the CallServerSideCode() method, for example:
Or you can access the rendered HTML like this: