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 请求 Mercedes 中输入查询,激活搜索(按 Enter)并分析将返回搜索引擎的 html 代码。问题是,如果您在代码中放置一个带有注释的断点(!!!),那么在 webBrowser.Document.Body.InnerHtml html 代码中的给定点处不会存储搜索结果。我徒劳地尝试了不同的浏览器事件。 c-sharp-webbrowser-button-click-then-go-to-another-page这个链接有类似的问题,但在我的情况下没有实现。

框架 4.0 VS2010 Windows 7 Ultimate x64 IE9.0。提前致谢。

4

0 回答 0