1
public partial class WebBrowserForm : Form
{
    public WebBrowserForm()
    {
        InitializeComponent();
        webBrowser.Navigate("http://ya.ru");
    }
    private void PlayButtonClick(object sender, EventArgs e)
    {
    _documentCompleted = false;
    webBrowser.DocumentCompleted += BrowserDocumentCompleted;
    var input = webBrowser.Document.All
        .Cast<HtmlElement>()
        .Where(elem => elem.GetAttribute("id") == "text")
        .First();

    input.Focus();
    SendKeys.SendWait("mercedes");
    SendKeys.SendWait("{ENTER}");

    while (webBrowser.ReadyState != WebBrowserReadyState.Complete || !_documentCompleted)
        Application.DoEvents();

    webBrowser.DocumentCompleted -= BrowserDocumentCompleted;

    return; // (!!!)
}

void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    _documentCompleted = true;
}
private bool _documentCompleted;
}

私は次のような状況にあります。上記のフォームのボタンは、検索エンジンにクエリを入力しようとします。Yandexはメルセデスをリクエストし、検索をアクティブにして(Enterキーを押す)、検索エンジンを返すhtmlコードを分析します。問題は、コメント(!!!)を使用してコードにブレークポイントを設定すると、webBrowser.Document.Body.InnerHtmlhtmlコードの特定のポイントに検索結果が保存されないことです。さまざまなブラウザイベントを無駄に試しました。 c-sharp-webbrowser-button-click-then-go-to-another-pageこのリンクにも同様の問題がありますが、私の場合は実現していません。

Framework 4.0 VS2010 Windows 7 Ultimatex64IE9.0。前もって感謝します。

4

0 に答える 0