using (var browser = new WebBrowser()) {
browser.Navigate(location);
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
while (browser.ReadyState != WebBrowserReadyState.Complete) {
Application.DoEvents();
}
log.Info("READY " + browser.Document.GetElementById("main").InnerText);
}
private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
WebBrowser wb = (WebBrowser)sender;
log.Info("COMPLETED " + wb.Document.GetElementById("main").InnerText);
}
两个日志都返回未应用 JavaScript 更改的元素。
现在我在 WinForms 中有另一个 WebBrowser,它会在启动时加载页面。这次我也使用DocumentCompleted
事件,但我仍然没有javascripted
来源。
form.webBrowser1.DocumentCompleted += (sender, e) => {
log.Info("READY HIAAR" + form.webBrowser1.Document.GetElementById("main").InnerText);
};
最后,我尝试使用按钮获取源。首先我让 WebBrowser 在 WinForms 中加载一个页面,然后在 5 秒后按下按钮:
form.dataButton.Click += (sender, e) => {
log.Info("READY HIAAR" + form.webBrowser1.Document.GetElementById("main").InnerText);
};
只有最后一个log.info
返回我需要的实际内容。
如何在所有 JavaScript 都已加载并运行时捕获事件?单击会破坏目的。