2016-04-13 66 views
0

我想創建一個程序,可以通過C#登錄到網站,但也使用默認瀏覽器。使用默認瀏覽器登錄到網頁c#

目前,它可以在窗體瀏覽器中正常工作,但我找不到代碼以使其適用於實際的瀏覽器。

任何反饋表示讚賞,

using System; 
using System.Windows.Forms; 
using System.Diagnostics; 

namespace PortalLogin2 
{ 
    public partial class Form1 : Form 
    { 

     bool mHooked; 

     public Form1() 
     { 
      InitializeComponent(); 
      webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string input = "https://en-gb.facebook.com/"; 
      Process.Start(input); 
     } 
     void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      if (mHooked) return; 

      HtmlDocument doc = webBrowser1.Document; 

      HtmlElement username = doc.GetElementById("email"); 
      HtmlElement password = doc.GetElementById("pass"); 
      HtmlElement submit = doc.GetElementById("u_0_"); 

      string txtUser = "insert username here"; 
      string txtPass = "insert password here"; 
      doc.GetElementById("email").InnerText = txtUser.ToString(); 
      doc.GetElementById("pass").InnerText = txtPass.ToString(); 

      submit.InvokeMember("click"); 
      mHooked = true; 
     } 

    } 

} 

回答

0

嘗試www.seleniumhq.org

硒自動化的瀏覽器。而已!你用這種力量做的事情完全取決於你。主要用於測試目的的自動化網絡應用程序 ,但肯定不僅限於此。 無聊的基於Web的管理任務也可以(也應該)也自動化爲 。

它支持C#和其他語言。

+0

的代碼可能會被推廣到了很多人,所以我需要到它的工作原理,以適應這個代碼。謝謝你 –

0

可以通過添加COM參考「Microsoft Internet Controls」和「Microsoft HTML Object Library」來自動化Internet Explorer。

這裏是一個工作示例,以填補在Facebook上田「電子郵件」:

var ie = new SHDocVw.InternetExplorer(); 
ie.Visible = true; 

// once the page is loaded 
ie.DocumentComplete += (object pDisp, ref object URL) => { 
    // get the document 
    mshtml.HTMLDocument doc = (mshtml.HTMLDocument)(object)ie.Document; 

    // set the email field 
    mshtml.IHTMLElement email = doc.getElementById("email"); 
    email.setAttribute("value", "[email protected]"); 
}; 

// naviagte to the page 
ie.Navigate("https://en-gb.facebook.com/"); 

// wait indefinitely without blocking the current thread 
new AutoResetEvent(false).WaitOne(); 
相關問題