这是我发现在运行javascript之后进入呈现的HTML(DOM)的一种解决方案:
将一个名为webBrowser1的WebBrowser控件放在Form1类的Form上。
[Form1.cs [设计]]
然后用于代码使用:
[Form1.cs]
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WebBrowserTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.webBrowser1.ObjectForScripting = new MyScript();
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://localhost:6489/Default.aspx");
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Navigate("javascript: window.external.CallServerSideCode();");
}
[ComVisible(true)]
public class MyScript
{
public void CallServerSideCode()
{
var doc = ((Form1)Application.OpenForms[0]).webBrowser1.Document;
}
}
}
}
将Form1_Load中的webBrowser1.Navigate(“ http:// localhost:6489 / Default.aspx ”)参数更改为您希望获取javascript处理后的DOM页面。
您可以在CallServerSideCode()方法中访问修改后的DOM,例如:
doc.GetElementById("myDataTable");
或者,您可以像这样访问呈现的HTML:
var renderedHtml = doc.GetElementsByTagName("HTML")[0].OuterHtml;