0

GetElementByTag/メソッドを使用してWebBrowserコントロールを使用してサイトに自動的にログインしようとしましたGetElemenByNameが、あまり成功しませんでした。(WFA-C#)

主な理由は、サイトがJavaScriptであるという事実にあると思います。

私はいくつかの調査を行い、2つの方法を見つけました:

  1. サイトのログインフォームを模倣することで、POSTと呼ばれるものを使用できます。(またはそのようなもの)
  2. サイト内のすべての入力フィールドにJavaScript入力を挿入します

私はこの問題にどのように取り組むべきかわかりません。JavaScriptやWebベースのプログラミングの経験がまったくないため、当面の問題についてアドバイスや解決策を実際に使用することができました。

/**編集1迅速な対応ありがとうございます。iveはコードを使用しようとしましたが、それでも同じ例外スローに直面しています。

ここにコードがあります:(私はそれを少しトリミングしました)

   public WorkerClass(string url)
    {
     webBrowser1 = new WebBrowser();
     webBrowser1.Navigate(url);
     webBrowser1.Document.GetElementById("c_Username").InnerText = "?????";
     webBrowser1.Document.GetElementById("c_Password").InnerText = "?????";
    }

上記のユーザー名の行に「System.NullReferenceExeption」が表示されます。

アクセスしようとしているサイトは-" http://www.gool.co.il "...たぶん私のアプローチは間違っていますか?!

4

1 に答える 1

1

Webブラウザコントロールを使用できます。ターゲットページで要素IDを見つけて、入力するだけです。

私はあなたのために簡単なものを書きます:

public Form1()
        {
            InitializeComponent();
            //navigate to you destination 
            webBrowser1.Navigate("https://www.certiport.com/portal/SSL/Login.aspx");
        }
        bool is_sec_page = false;
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (!is_sec_page)
            {
                //get page element with id
                webBrowser1.Document.GetElementById("c_Username").InnerText = "username";
                webBrowser1.Document.GetElementById("c_Password").InnerText = "pass";
                //login in to account(fire a login button promagatelly)
                webBrowser1.Document.GetElementById("c_LoginBtn_c_CommandBtn").InvokeMember("click");
                is_sec_page = true;
            }
            //secound page(if correctly aotanticate
            else
            {
                //intract with sec page elements with theire ids
            }

        }
于 2013-03-16T18:28:57.633 に答える