0

ボタンをクリックした後に取得する Web ページのソース コードを取得しようとしています。

Web ページにあるボタンをクリックできます。

 webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
    Application.DoEvents();
}               
webBrowser1.Document.GetElementById("downloadButton").InvokeMember("click");

この後、新しいウィンドウが表示されます。クリック後にこの新しいウィンドウのソースコードを表示することは可能ですか?

4

1 に答える 1

0

ハッキーなアプローチは次のとおりです。

  1. ボタンの「onclick」イベントにイベント ハンドラーをアタッチします。
  2. 次に、イベントがトリガーされたら、Microsoft Internet Controls (SHDocVw)タイプ ライブラリを使用して、IE で最後に開かれた URL を取得します。
  3. 最後に、URL に移動し、ドキュメントが読み込まれたら、webBrowser1.DocumentTextプロパティからドキュメントのソースを取得します。

プロジェクトで、 Microsoft Internet Controlsタイプ ライブラリへの参照を追加します([ COM ] タブにあります)。ファイルの先頭に追加します。

using SHDocVw;

コード:

webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
    Application.DoEvents();
}

// assign the button to a variable
var button = webBrowser1.Document.GetElementById("downloadButton");

// attach an event handler for the 'onclick' event of the button
button.AttachEventHandler("onclick", (a, b) =>
{
    // use the Microsoft Internet Controls COM library
    var shellWindows = new SHDocVw.ShellWindows();

    // get the location of the last window in the collection
    var newLocation = shellWindows.Cast<SHDocVw.InternetExplorer>()
        .Last().LocationURL;

    // navigate to the newLocation
    webBrowser1.Navigate(newLocation);
    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }

    // get the document's source
    var source = webBrowser1.DocumentText;
});

button.InvokeMember("click");
于 2013-07-17T10:11:08.040 に答える