使用浏览器浏览多个网页



我正在做一个项目。在我的mssql服务器上,我有这么多的url,我需要检查我是否可以登录。下面是我到目前为止的代码:

        public List<WebBrowser> myBrowsers = new List<WebBrowser>();
    private void button3_Click(object sender, EventArgs e)
    {
        SqlConnection connection = new SqlConnection(connectionString);
        connection.Open();
        SiteeeID = Convert.ToInt32(listBox1.SelectedValue);
        string url = "select http,username,pass,userID,passID,butonID from AyrintiSite where username!=''";
        DataTable dt = new DataTable();
        using (SqlConnection cn = new SqlConnection(connectionString))
        {
            using (SqlCommand cm = new SqlCommand(url, cn))
            {
                cn.Open();
                dt.Load(cm.ExecuteReader());
            }
        }
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            WebBrowser browser = new WebBrowser();
            browser.DocumentCompleted += webBrowserDocumentCompleted;
            browser.Navigate(dt.Rows[i][0].ToString());
            myBrowsers.Add(browser);
        }
    }
    private void webBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
            return;
        WebBrowser browser = sender as WebBrowser;
        browser.Document.GetElementById("KullaniciAdiTextBox").SetAttribute("value", "username");
        browser.Document.GetElementById("SifreTextBox").SetAttribute("value", "pass");
        browser.Document.GetElementById("SistemeGirImageButton").InvokeMember("click");
        browser.DocumentCompleted -= webBrowserDocumentCompleted;
        browser.DocumentCompleted += webBrowserDestroyOnCompletion;
    }
    private void webBrowserDestroyOnCompletion(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
            return;
        if (e.Url.AbsolutePath.Contains("Login"))
        {
            //send e-mail
        }
        WebBrowser browser = sender as WebBrowser;
        browser.Dispose();
        myBrowsers.Remove(browser);
    }

现在我的数据表中有17页。其中10-12可以正确登录,但其他人不能,我的程序给我发电子邮件。我检查了上千次,在我的数据库上一切正常,所有人都应该登录。我的代码有什么错误吗?

在DocumentCompleted事件中导航到下一个URL

声明一个pageIndex变量以保持索引在dt.rows中:

 int pageIndex=0 ; 

替换dt上的循环。

        WebBrowser browser = new WebBrowser();
        browser.DocumentCompleted += webBrowserDocumentCompleted;
        browser.Navigate(dt.Rows[pageIndex][0].ToString());

"Loop" on dt。

private void webBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath) return;
    WebBrowser browser = sender as WebBrowser;
    browser.Document.GetElementById( "KullaniciAdiTextBox").SetAttribute("value", "username");
    browser.Document.GetElementById( "SifreTextBox").SetAttribute("value", "pass");
    browser.Document.GetElementById( "SistemeGirImageButton").InvokeMember("click");
    pageIndex++ ;
    If (pageIndex<dt.Rows.Count) browser.Navigate(dt.Rows[pageIndex][0].ToString());
  }

最新更新