单击按钮后等待加载页面
Posted
技术标签:
【中文标题】单击按钮后等待加载页面【英文标题】:Wait for loading page after button click 【发布时间】:2013-04-11 14:03:48 【问题描述】:我希望能够点击按钮而不是等待页面加载。 我搜索,但没有正常工作的解决方案。 这是代码的一部分:
el = webBrowser1.Document.GetElementById("LoginButton");
el.InvokeMember("click");
webBrowser1.Navigate(url);
我需要它是点击后,应用程序将加载页面,然后才转到另一个页面。
此外,webBrowser1.Navigate(url)
必须与单击方法相同。因为这一切都在一个循环中。
请帮忙。
已编辑。 *更多代码*(第一个代码是我需要的示例)
List<string> list1 = new List<string>();
bool flag = true;
while (flag)
flag = false;
foreach (htmlElement he2 in webBrowser1.Document.GetElementsByTagName("a"))
if (he2.GetAttribute("href").Contains("profile.php?ID="))
list1.Add(he2.InnerText);
foreach (HtmlElement he in webBrowser1.Document.GetElementsByTagName("a"))
if (he.InnerHtml == "Next")
flag = true;
he.InvokeMember("click");
当我点击时,下一页必须加载,我必须在下一页上解析标签,但它在下一页加载之前开始解析页面,所以它解析同一页面。
【问题讨论】:
你可以添加你的目标网址 @IRSOG,抱歉,没有。我登录网站,然后转到私人消息。 el.InvokeMember("click"); 之后你想做什么发生了什么? @IRSOG 我转到下一页,解析开始,但我需要在下一页加载之前等待 您尝试过 webBrowser1.DocumentCompleted 事件吗? 【参考方案1】:最后,我刚刚从我的按钮中获得了 href 并使用了这段代码(由 he.InvokeMember("click") 插入) :
webBrowser1.Navigate(url_next);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
效果很好。
【讨论】:
【参考方案2】:您可以使用DocumentCompleted
事件来了解登录何时完成。
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
el = webBrowser1.Document.GetElementById("LoginButton");
el.InvokeMember("click");
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
Uri myUrl = new Uri("http://***.com");
if (e.Url == myUrl)
WebBrowser1.Navigate(url);
【讨论】:
没有用,因为我点击后有一些代码,我该如何找回? 为什么不把剩下的代码移到事件处理程序中呢?或者将该代码分离成一个新方法并从事件处理程序中调用它? 确定一旦您导航到该页面,您就不需要继续循环该部分了吗?如果您需要更多帮助,请发布更多代码。以上是关于单击按钮后等待加载页面的主要内容,如果未能解决你的问题,请参考以下文章
单击按钮后在视图中加载数据而不重新加载页面asp.net mvc中的所有数据