Windows フォーム アプリケーション – 入力要素の操作WinForm WebBrowser
私はウェブサイトへのログインに慣れていHttpWebResponse
ますHttpWebRequest
が、mshtml ライブラリを使用して試してみたところ、奇妙な動作が見つかりました。他の誰かが私を助けてくれるかどうかを確認したいと思います..
Username
フィールド、フィールドPassword
、およびButton
.
ロジックは非常に基本的なもので、Web ブラウザーが組み込まれた winform アプリを作成しました。イベントではDocument_Completed
、次のコードを使用して設定を入力し、ボタンをクリックします。
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser.Url.ToString() == @"MyWebPage/signin")
{
HTMLDocument hdc = new HTMLDocumentClass();
hdc = (HTMLDocument)webBrowser.Document.DomDocument;
IHTMLElement elb = hdc.getElementById("login_button");
IHTMLInputElement elu = (IHTMLInputElement)hdc.getElementById("username");
IHTMLInputElement elp = (IHTMLInputElement)hdc.getElementById("password");
try
{
elu.value = "MyID";
elp.value = "MyPwd";
elb.click();
}
catch { }
}
}
このコードが非常に高速でエラー処理がないことを除けば、部分的にうまくいくはずです..
次の 2 つのシナリオがあります。
ツールを起動すると、Web ページが読み込まれます。
- ツールは UserID フィールドと Password フィールドを正しく入力します。
- ツールがボタンをクリックできない
ボタンを手動でクリックし、ログインしました。ログアウトをクリックし、ログイン ページに戻りました。
- すぐに再度ログインすると、ツールが情報を入力します
- ツールもすぐにボタンをクリックします。
なぜこれが起こるのか、現在のセットアップでこれを回避する方法を説明できる人はいますか (したがって、を使用しませんHttpWebRequest
)。起動時にページをロードするか、ログアウト後にリダイレクトされるかの違いはわかりませんが、どうやらそこに違いがあるか、何か間違ったことをしています。
この件に関するご意見をお待ちしております。
ありがとう、ケビン
編集:
Button
Web ページのボタンをクリックするために、以下と同じバックエンド コードを使用する Windows フォームにを追加しました。これは完全に機能します。
イベントでこのボタンのクリックをトリガーしましたwebBrowser_Completed
が、機能しません。何らかの理由で、イベントに追加したものすべてで、コントロールwebBrowser_DocumentCompleted
内のボタンのクリック イベントをトリガーできません。WebBrowser
そのイベント全体が完了したら、それをトリガーしようとすると動作しますが、これを自動化したい..何かアドバイスはありますか?