0

WebBrowser DocumentCompleted の問題についていくつか調査した後、ログイン試行を DocumentCompleted イベント ハンドラーに挿入しました。

これが私のコードです:

public void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        wb.Navigate("fooPage");
        var browser = (WebBrowser)sender;

        HtmlElement email = CookieReader.GetElement("email", browser);
        HtmlElement password = CookieReader.GetElement("pass", browser);
        email.SetAttribute("email", "foo@something.com");
        password.SetAttribute("pass", "foo");
        HtmlElement loginElement = CookieReader.GetElement("fooLog", browser);
        loginElement.InvokeMember("click"); //wb_DocumentCompleted Method Continues...

ログインできませんでした(ログインボタンが正しいことを再確認しました)。ブラウザ オブジェクトの ReadyState プロパティに問題があるようです。IsBusy プロパティは常に False ですが、常に読み込み中です。また、DocumentCompleted イベントが発生したため、ページの読み込みが完了するはずでした。これがどのように可能になるかについてのアイデアはありますか?

さらに、デバッグ時に InvokeMember メソッドが html INPUT 要素を変更し、無効なタグが表示されます (disabled=\"\" - 私が間違っていなければ、これは HTML5 disabled="disabled" です)。このタグが追加された理由はわかりません (以前はありませんでした)。ページの永続的な Loading ReadyState に何らかの形で関連している場合は、洞察やアドバイスをいただければ幸いです。

4

1 に答える 1

0

私も同じ問題を抱えていました。イベントは、1 回のDocumentCompleted読み込みで複数回発生します。最初は本物ではないと思います。を作成して、イベントが発生BackgroundWorkerしたときに開始する必要があると思います。DocumentCompletedジョブを実行する前に数秒待つ必要があります。それは間違いなくうまくいくでしょう。

一度だけ開始する必要がありBackgroundWorkerます。

于 2013-05-16T10:49:57.310 に答える