点击按钮后等待加载页面

时间:2013-04-11 14:03:48

标签: c# webbrowser-control invokemember

我希望能够点击按钮而不是等待页面加载。 我搜索,但没有正确的解决方案。 这是代码的一部分:

el = webBrowser1.Document.GetElementById("LoginButton");
el.InvokeMember("click");
webBrowser1.Navigate(url);

我需要它是在点击之后,应用程序将加载页面,然后才转到另一个页面。 此外,webBrowser1.Navigate(url)必须与click相同。因为它都在循环中。

请帮忙。

编辑。 * 更多代码 *(第一个代码是我需要的例子)

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


                    }
                }


            }

当我点击时,必须加载下一页,我必须在下一页上解析标签,但它会在下一页加载之前开始解析页面,所以它会解析同一页面。

2 个答案:

答案 0 :(得分:1)

最后,我刚从我的按钮获得了href并使用了这段代码(而不是he.InvokeMember(“click”)) :

 webBrowser1.Navigate(url_next);
 while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
     Application.DoEvents();

工作正常。

答案 1 :(得分:0)

您可以使用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://stackoverflow.com");
    if (e.Url == myUrl)
    {
        WebBrowser1.Navigate(url);
    }
}