单击按钮后等待加载页面

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);
    

【讨论】:

没有用,因为我点击后有一些代码,我该如何找回? 为什么不把剩下的代码移到事件处理程序中呢?或者将该代码分离成一个新方法并从事件处理程序中调用它? 确定一旦您导航到该页面,您就不需要继续循环该部分了吗?如果您需要更多帮助,请发布更多代码。

以上是关于单击按钮后等待加载页面的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 页面加载后等待,然后单击

页面加载后等待,然后单击

页面加载后无法找到嵌套元素

单击按钮后在视图中加载数据而不重新加载页面asp.net mvc中的所有数据

jquery masonry在初始页面加载时崩溃,单击“主页”菜单按钮后工作正常

Angular JS:单击按钮后如何在特定元素中加载 Angular js 部分视图页面