0

GetElementByTag我一直在尝试使用/方法自动使用 WebBrowser 控件登录到站点,GetElemenByName但没有太大成功。(WFA - C#)

我相信主要原因是该网站使用 JavaScript。

我做了一些研究,发现了两种方法:

  1. 通过模仿站点登录表单,我可以使用称为 POST 的东西。(或类似的东西)
  2. 向站点中的所有输入字段注入 javascript 输入

我不知道如何解决这个问题,并且由于我完全缺乏使用 JavaScript 或任何基于 Web 的编程的经验,我真的可以针对手头的问题使用任何建议或解决方案。

/** EDIT 1 感谢您的快速回复。我尝试使用您的代码,但仍然面临相同的异常抛出..

这是代码:(我修剪了一下)

   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

您可以使用网络浏览器控件,只需在目标页面上找到元素 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 回答