0

我希望能够单击按钮,然后等待页面加载。我搜索,但没有正常工作的解决方案。这是代码的一部分:

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


                    }
                }


            }

当我单击时,必须加载下一页,并且我必须在下一页上解析标签,但它在下一页加载之前开始解析页面,因此它解析同一页面。

4

2 回答 2

1

最后,我刚刚从我的按钮中获得了 href 并使用了这段代码(由 he.InvokeMember("click") 代替):

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

它工作正常。

于 2013-04-12T08:12:31.973 回答
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);
    }
}
于 2013-04-11T14:26:46.580 回答