2011-08-12 20 views
1

WebBrwoserコントロールを使用してhttps://www.salesgenie.com/Account/LogOnにプログラムでログインしようとしています。WebBrowserコントロールを使用してプログラムでWebサイトにログインするときの問題

「ログオン」をクリックすると、ブラウザはLogonCompletedイベントの次のページに移動しません。

HtmlElement userName = wBrowser.Document.GetElementById("username"); 
userName.SetAttribute("value", SomeUserName); 

HtmlElement password = wBrowser.Document.GetElementById("password"); 
password.SetAttribute("value", SomePassword); 

wBrowser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(LogonPageLoaded); 
wBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(LogonCompleted); 

HtmlElement logonForm = wBrowser.Document.GetElementById("logon-submit"); 
logonForm.InvokeMember("click"); 

これは、要素 "logon-submit"がJavaScript関数などを呼び出すためです。

ありがとうございます。

答えて

2

あなたは私はあなたがクリックを起動しようとしていることを推測している上記の問題のほかにpassword

EDIT

を設定する必要があるときは、もう一度userNameを設定している、あなたの第四行をチェックあまりにも早く。ボタンはJavaScriptを使用して作成されるため、クリックする前にちょっと待たなければなりません。残念ながら、JavaScriptがいつdoneであるかを判断するために聞くことはできませんが、おそらくさまざまなプロパティをテストできます。最も安全なことはおそらく、ロード後わずか2秒待ってからclickを呼び出すことです。

有効なユーザー名とパスワードはありませんが、以下のコードは私にとってはうまくいきます。 button1というボタンとwebBrowser1という1つのWebブラウザがあります。ページが視覚的にブラウザに読み込まれると、フォームのボタンをクリックすると、ブラウザのclickイベントが正しく呼び出されます。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      this.webBrowser1.Navigate("https://www.salesgenie.com/Account/LogOn"); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string SomeUserName = "Test"; 
      string SomePassword = "Test"; 

      HtmlElement userName = webBrowser1.Document.GetElementById("username"); 
      Console.WriteLine(userName.GetAttribute("value")); 
      userName.SetAttribute("value", SomeUserName); 
      userName.RemoveFocus(); 

      HtmlElement password = webBrowser1.Document.GetElementById("password"); 
      Console.WriteLine(userName.GetAttribute("value")); 
      password.SetAttribute("value", SomePassword); 

      HtmlElement logonForm = webBrowser1.Document.GetElementById("logon-submit"); 
      logonForm.InvokeMember("click"); 
     } 
    } 
} 
+0

おかげさまでクリス...しかし、これは問題ではありませんでした。 – YAM

+0

何か提案がありますか? – YAM

+0

実際には、完全にロードされるまで「ログオン - 送信」ボタンをクリックしません。 – YAM

0

logonForm.click()を使用してみましたか。 ?メンバーを呼び出すことなく?

関連する問題