5
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 が読み込まれて実行されたときのイベントをキャッチするにはどうすればよいですか? クリックすると目的が無効になります。

4

0 に答える 0