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") のinsted):

 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 に答える