2010-11-24 6 views
2

は、C#のWebブラウザで自動的にログインするプログラムを作成しようとしました。これは私がこの目的のために現時点で使用しているコードです:WebブラウザのSetAttributeが機能しない(パスワードフィールド)

HtmlElementCollection pageTextElements = loginBrowser.Document.GetElementsByTagName("input"); 
     foreach (HtmlElement element in pageTextElements) 
     { 
      if (element.Name.Equals("username")) 
       element.SetAttribute("value", this.UserName); 
      if (element.Name.Equals("password")) 
       element.SetAttribute("value", this.Password); 
     } 

パスワードはユーザー名ではなくパスワードで埋められますか? ): グーグルで回ったが、誰も答えなかったトピックを始めた少数の人々しかいない。 /:

うまくいけば誰かが私を助けることができます。 このパスワードフィールドアウフ源である:

<input type="password" value="" maxlength="50" size="25" name="password" class="bginput"> 
+0

@Adam Marasご清聴ありがとうございます。私はそれについてのアドバイスがないので、私の答えを取り除く。 –

+0

パスワードフィールドの属性を設定する行にブレークポイントを設定しましたか?ちょうどヒットしたかどうかを確認するだけですか? –

+0

はい、私はしました。それはヒットし、実行されますが、単にパスワードをボックスに入れません。 – Omegavirus

答えて

3

あなたは、ドキュメントの更新されるまで待つ必要があります完了しました。 DocumentCompletedイベントメソッド。

何が起こっているのかを知りたい場合は、上部にPanel、下部にWebBrowserのフォームを作成します。 3 TextBoxesButtonおよびもう1つのTextBoxを加える。以下のボックスのOnClick方法は、次の手順を実行します

webBrowser1.Document.GetElementById(this.textBox1.Text).SetAttribute(this.textBox2.Text, this.textBox3.Text); 
this.textBox4.Text = webBrowser1.Document.GetElementById(this.textBox1.Text).GetAttribute(this.textBox2.Text); 

あなたは、フォーム上のごPasswordボックスが正しく移入ことがわかります。上記の

ウェイン

1

は次のようにのinnerTextプロパティを設定してみてください、それは私の作品(vb.net):

Dim txtPassword As HtmlElement = browser.Document.GetElementById("ctl00_ContentPlaceHolder1_txtPassword") 

txtPassword.InnerText = "123456" 
+0

私のために働かない/ – Omegavirus

+0

すべての要素を文字列に書き込んで&password = to&password = thepass;に変更して問題を解決しました (: – Omegavirus

1

なし私のために働いていない、私はDocumentCompleted()イベントハンドラではなく、パスワードのテキストボックスにユーザー名テキストボックスでのsetAttribute()を呼び出すことができます。その後のonFocusハンドラに

HtmlElementCollection inputs = doc.GetElementsByTagName("input"); 
HtmlElement usr = inputs.GetElementsByName("username")[0]; 
usr.setAttribute("value", strUsername); 

HtmlElement pwd = inputs.GetElementsByName("password")[0]; 
pwd.GotFocus += new HtmlElementEventHandler(pwd_GotFocus); 
pwd.Focus(); 

void pwd_GotFocus(object sender, HtmlElementEventArgs e) 
{ 
    HtmlElement pwd = (HtmlElement)sender; 
    pwd.SetAttribute("value", strPassword); 
} 

私はこの作業の理由はわかりませんし、他にはない、私は最終的にそれがで動作するようになりました。パスワードを変更しようとしたのは、ユーザー名の設定からドキュメントの変更が干渉した場合だけです。私はさらに別のWebBrowserコントロールを作成してから、DocumentTextをソースから取り出し、2番目のWebBrowserでDocumentTextを設定する前に、元のHTMLのパスワード値を設定して置換して置き換え、再度値を正しく設定しませんでした。

誰かがいる場合は、よりクリーンなソリューションを知りたいです。

+0

それは私のために血の作品も!すべての種類の方法を試しています..このステップは動作するようです。 – teapeng

関連する問題