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。提前致谢。