Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            StringBuilder message  = new StringBuilder();
            decimal       pageSize = 30m;
            int           index    = 0;

            using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver())
            {
                driver.Navigate().GoToUrl(Url);  //driver.Url = "http://www.baidu.com"是一样的

                var account = driver.FindElement(By.Id("log_ph"));
                account.Click();
                account.SendKeys(UserName);

                var password = driver.FindElement(By.Id("log_ps"));
                password.Click();
                password.SendKeys(Password);

                var login = driver.FindElement(By.Id("log_ok"));
                login.Click();

                //driver.Navigate().GoToUrl("");
                //由于这边是异步加载,需要等待一定的时候,异步加载页面才能加载出来。
                Thread.Sleep(20000);

                //var page1 = driver.PageSource;
                driver.SwitchTo().Frame(0);
                //var page = driver.PageSource;

                var pageNumber = Math.Ceiling(TrackingNumbers().Length / pageSize);
                var flag       = true;
                for (int i = 0; i < pageNumber; i++)
                {
                    try
                    {
                        var trackingNumbers = TrackingNumbers().Skip(i * (int)pageSize).Take((int)pageSize).ToArray();
                        index = i;
                        Information(driver, trackingNumbers, i);
                        message.AppendLine($"index:{index},Success!");
                    }
                    catch (Exception ex)
                    {
                        flag = false;
                        message.AppendLine($"index:{index},Error:{ex.Message}");
                    }
                }
                if (flag)
                {
                    message.AppendLine("all success!");
                }
            }
            Console.WriteLine(message.ToString());
            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public void Original()
        {
            //https://www.cnblogs.com/zhaotianff/p/11330810.html
            using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver())
            {
                driver.Navigate().GoToUrl("");  //driver.Url = "http://www.baidu.com"是一样的

                var account = driver.FindElement(By.Id("log_ph"));
                account.Click();
                account.SendKeys("");

                var password = driver.FindElement(By.Id("log_ps"));
                password.Click();
                password.SendKeys("");

                var login = driver.FindElement(By.Id("log_ok"));
                login.Click();

                driver.Navigate().GoToUrl("");

                var page1 = driver.PageSource;
                driver.SwitchTo().Frame(0);
                var page = driver.PageSource;

                var searchButton = driver.FindElement(By.CssSelector(".search-input"));
                searchButton.Click();

                var searchBox = driver.FindElement(By.Id("cc"));
                searchBox.SendKeys("UW123CNMODIFY\nUW456CNMODIFY");//abc\nabc\nabc

                var search = driver.FindElement(By.CssSelector(".button_box> .el-button"));
                search.Click();

                var allSelect = driver.FindElement(By.CssSelector(".has-gutter .el-checkbox__inner"));
                allSelect.Click();

                var informationButton = driver.FindElement(By.CssSelector(".el-dropdown:nth-child(1) span"));
                informationButton.Click();

                Thread.Sleep(1000);

                var informationAction = driver.FindElement(By.CssSelector(".el-dropdown-menu__item--divided"));
                informationAction.Click();
            }
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            List <string> Vals      = reader("C:\\Users\\User\\Downloads\\Telegram Desktop\\input_formatted.csv"); // список всех регистрационных номеров, очищенный
            List <string> ValsError = reader("C:\\Users\\User\\Downloads\\Telegram Desktop\\input_full.csv");      // список всех регистрационных номеров, неочищенный

            List <List <string> > output = new List <List <string> >();

            XmlDocument   MainDoc = new XmlDocument();
            XmlTextWriter Writer  = new XmlTextWriter("C:\\Users\\User\\Downloads\\Telegram Desktop\\output.xml", Encoding.UTF8);

            Writer.WriteStartDocument();
            Writer.WriteStartElement("head");
            Writer.WriteEndElement();
            Writer.Close();

            MainDoc.Load("C:\\Users\\User\\Downloads\\Telegram Desktop\\output.xml");


            string urlMain = "http://company.lursoft.lv/ru/"; // основная часть ссылки, к ней будут добавляться регистрационные номера

            Console.SetBufferSize(Console.BufferWidth, 1000); // а вот это для длины консоли

            List <int> statistics = new List <int>();

            IWebDriver DriverChrome = new OpenQA.Selenium.Chrome.ChromeDriver();

            for (int i = 0; i < Vals.Count; i++)
            {
                try
                {
                    string CurrentUrl = urlMain + Vals[i];
                    DriverChrome.Navigate().GoToUrl(CurrentUrl);
                    int statisticsCount = 0;

                    ReadOnlyCollection <IWebElement> ListTD = DriverChrome.FindElements(By.TagName("td"));

                    char empty = ' ';
                    if (ListTD.Count > 0 && ListTD[0].Text.Equals("Network Error (tcp_error)")) // вылетела ошибка TCP(сервер перегружен)
                    {
                        statisticsCount++;
                        i--;
                        continue;
                    }
                    else if (ListTD.Count == 0) // не найдено
                    {
                        statistics.Add(statisticsCount);
                        List <string> CurrentList = new List <string>();

                        CurrentList.Add((i + 1).ToString()); // RecordID
                        CurrentList.Add("-");                // Name
                        CurrentList.Add("-");                // OrgForm
                        CurrentList.Add(ValsError[i]);       // RegNum
                        CurrentList.Add("-");                // RegDate
                        CurrentList.Add("-");                // SEPA
                        CurrentList.Add("-");                // NDSNum
                        CurrentList.Add("-");                // IsActual
                        CurrentList.Add("-");                // Address
                        CurrentList.Add("-");                // RegisterNo
                        CurrentList.Add("-");                // RegisterDate
                        CurrentList.Add("-");                // LastUpdate
                        CurrentList.Add("-");                // Website
                        CurrentList.Add("-");                // Email
                        CurrentList.Add("-");                // Phone
                        CurrentList.Add("-");                // Fax
                        CurrentList.Add("false");            // IsFound

                        output.Add(CurrentList);
                    }
                    else // найдено
                    {
                        statistics.Add(statisticsCount);
                        string Name = "", OrgForm = "", RegNum = "", RegDate = "", Sepa = "", NDSNum = "",
                               IsActual = "", Address = "", RegisterNo = "", RegisterDate = "", LastUpdate = "", Website = "", Email = "", Phone = "", Fax = "", IsFound = "true";
                        Regex NDS = new Regex("LV\\d{8,15}");
                        Match match;

                        ReadOnlyCollection <IWebElement> ListImg = DriverChrome.FindElements(By.TagName("img"));
                        bool ImgFlag = false;

                        for (int j = 0; j < ListImg.Count; j++)
                        {
                            if (ListImg[j].GetAttribute("alt").ToString().Equals("Активный"))
                            {
                                IsActual = "true";
                                ImgFlag  = true;
                            }
                            else if (ListImg[j].GetAttribute("alt").ToString().Equals(" PVN_ne"))
                            {
                                IsActual = "false";
                                ImgFlag  = true;
                            }
                        }

                        if (ImgFlag == false)
                        {
                            IsActual = "-";
                        }
                        List <string> matches = new List <string>();
                        bool          regFlag = false;
                        for (int j = 0; j < ListTD.Count; j++)
                        {
                            match = NDS.Match(ListTD[j].Text);
                            matches.Add(match.Value.ToString());


                            switch (ListTD[j].Text)
                            {
                            case "Название":
                                string tmp5     = ListTD[++j].Text;
                                int    Position = tmp5.IndexOf('П');
                                if (Position == -1)
                                {
                                    Name = tmp5;
                                }
                                else
                                {
                                    Name = tmp5.Substring(0, Position);
                                }
                                Name = Name.Replace('\n', empty);
                                Name = Name.Replace('\r', empty);
                                break;

                            case "Данные из реестра плательщиков НДС":
                                string tmp4 = ListTD[++j].Text;
                                if (tmp4.Equals("Нет"))
                                {
                                    NDSNum   = "-";
                                    IsActual = "-";
                                }
                                break;

                            case "Правовая форма":
                                OrgForm = ListTD[++j].Text;
                                break;

                            case "Регистрационный номер, дата":
                                string[] tmp = ListTD[++j].Text.Split(',');
                                RegNum  = tmp[0];
                                RegDate = tmp[1].Substring(1, tmp[1].Length - 1);
                                break;

                            case "Идентификатор SEPA":
                                Sepa = ListTD[++j].Text;
                                break;

                            case "Юридический адрес":
                                string tmp2      = ListTD[++j].Text;
                                int    Position2 = tmp2.IndexOf('П');
                                if (Position2 == -1)
                                {
                                    Address = tmp2;
                                }
                                else
                                {
                                    Address = tmp2.Substring(0, Position2);
                                }
                                Address = Address.Replace('\n', empty);
                                Address = Address.Replace('\r', empty);
                                break;

                            case "Регистрационное удостоверение":
                                regFlag = true;
                                string[] tmp3 = ListTD[++j].Text.Split(' ');
                                RegisterNo   = tmp3[0] + " " + tmp3[1];
                                RegisterDate = tmp3[2];
                                break;

                            case "Последнее обновление в Регистре Предприятий":
                                LastUpdate = ListTD[++j].Text;
                                break;
                            }
                            if (!regFlag)
                            {
                                RegisterNo   = "-";
                                RegisterDate = "-";
                            }
                        }

                        for (int j = 0; j < matches.Count; j++)
                        {
                            if (!matches[j].Equals(""))
                            {
                                NDSNum = matches[j];
                                break;
                            }

                            if (j == matches.Count - 1)
                            {
                                NDSNum = "-";
                            }
                        }

                        DriverChrome.SwitchTo().Frame(0);

                        ReadOnlyCollection <IWebElement> ListPhones = DriverChrome.FindElements(By.ClassName("vizitka_contact_phone"));
                        IWebElement Web = DriverChrome.FindElement(By.ClassName("vizitka_contact_web"));



                        if (ListPhones[0].Text.IndexOf('+') == -1)
                        {
                            Phone = "-";
                        }
                        else
                        {
                            Phone = ListPhones[0].Text.Substring(ListPhones[0].Text.IndexOf('+'));
                        }

                        if (ListPhones[1].Text.IndexOf('+') == -1)
                        {
                            Fax = "-";
                        }
                        else
                        {
                            Fax = ListPhones[1].Text.Substring(ListPhones[1].Text.IndexOf('+'));
                        }


                        string[] Webs = Web.Text.Split('\n');

                        if (Webs[0].Equals("Добавь адрес сайта\r"))
                        {
                            Email = "-";
                        }
                        else
                        {
                            Email = Webs[0];
                            Email = Email.Replace('\n', empty);
                            Email = Email.Replace('\r', empty);
                        }

                        if (Webs[1].Equals("Добавь адрес эл. почты"))
                        {
                            Website = "-";
                        }
                        else
                        {
                            Website = Webs[1];
                        }

                        List <string> CurrentList = new List <string>();

                        CurrentList.Add((i + 1).ToString());    // RecordID
                        CurrentList.Add(Name);                  // Name
                        CurrentList.Add(OrgForm);               // OrgForm
                        CurrentList.Add(RegNum);                // RegNum
                        CurrentList.Add(RegDate);               // RegDate
                        CurrentList.Add(Sepa);                  // SEPA
                        CurrentList.Add(NDSNum);                // NDSNum
                        CurrentList.Add(IsActual);              // IsActual
                        CurrentList.Add(Address);               // Address
                        CurrentList.Add(RegisterNo);            // RegisterNo
                        CurrentList.Add(RegisterDate);          // RegisterDate
                        CurrentList.Add(LastUpdate);            // LastUpdate
                        CurrentList.Add(Website);               // Website
                        CurrentList.Add(Email);                 // Email
                        CurrentList.Add(Phone);                 // Phone
                        CurrentList.Add(Fax);                   // Fax
                        CurrentList.Add(IsFound);               // IsFound

                        output.Add(CurrentList);
                    }
                }
                catch
                {
                    i--;
                }
            }

            //Excel.Application ExcelApp;
            //ExcelApp = new Excel.Application();
            //ExcelApp.Visible = true;
            //ExcelApp.SheetsInNewWorkbook = 1;
            //ExcelApp.Workbooks.Add(Type.Missing);

            //Excel.Workbooks WorkBooks = ExcelApp.Workbooks;
            //Excel.Workbook Workbook = WorkBooks[1];
            //Excel.Sheets ExcelSheets = Workbook.Worksheets;
            //Excel.Worksheet CurrentSheet = (Excel.Worksheet)ExcelSheets.get_Item(1);

            //Excel.Range cell;
            //cell = CurrentSheet.get_Range("A1", Type.Missing);
            //cell = cell.get_Offset(1, 0);

            //for (int i = 0; i < output.Count; i++)
            //{
            //    for (int j = 0; j < output[i].Count; j++)
            //    {
            //        cell.Value2 = output[i][j];
            //        cell = cell.get_Offset(0, 1);
            //    }
            //    cell = cell.get_Offset(1, -17);
            //}

            XmlDocument   MainDoc2 = new XmlDocument();
            XmlTextWriter Writer2  = new XmlTextWriter("C:\\Users\\User\\Downloads\\Telegram Desktop\\output1.xml", Encoding.UTF8);

            Writer2.WriteStartDocument();
            Writer2.WriteStartElement("head");
            Writer2.WriteEndElement();
            Writer2.Close();

            MainDoc.Load("C:\\Users\\User\\Downloads\\Telegram Desktop\\output1.xml");

            for (int i = 0; i < output.Count; i++)
            {
                XmlNode Element = MainDoc2.CreateElement("BusinessPartner");
                MainDoc2.DocumentElement.AppendChild(Element);

                XmlNode RecordID = MainDoc2.CreateElement("RecordID");
                RecordID.InnerText = output[i][0];
                Element.AppendChild(RecordID);

                XmlNode Name = MainDoc2.CreateElement("Name");
                Name.InnerText = output[i][1];
                Element.AppendChild(Name);

                XmlNode OrgForm = MainDoc2.CreateElement("OrgForm");
                OrgForm.InnerText = output[i][2];
                Element.AppendChild(OrgForm);

                XmlNode RegNum = MainDoc2.CreateElement("RegNum");
                RegNum.InnerText = output[i][3];
                Element.AppendChild(RegNum);

                XmlNode RegDate = MainDoc2.CreateElement("RegDate");
                RegDate.InnerText = output[i][4];
                Element.AppendChild(RegDate);

                XmlNode Sepa = MainDoc2.CreateElement("Sepa");
                Sepa.InnerText = output[i][5];
                Element.AppendChild(Sepa);

                XmlNode NDSNum = MainDoc2.CreateElement("NDSNum");
                NDSNum.InnerText = output[i][6];
                Element.AppendChild(NDSNum);

                XmlNode IsActual = MainDoc2.CreateElement("IsActual");
                IsActual.InnerText = output[i][7];
                Element.AppendChild(IsActual);

                XmlNode Address = MainDoc2.CreateElement("Address");
                Address.InnerText = output[i][8];
                Element.AppendChild(Address);

                XmlNode RegisterNo = MainDoc2.CreateElement("RegisterNo");
                RegisterNo.InnerText = output[i][9];
                Element.AppendChild(RegisterNo);

                XmlNode RegisterDate = MainDoc2.CreateElement("RegisterDate");
                RegisterDate.InnerText = output[i][10];
                Element.AppendChild(RegisterDate);

                XmlNode LastUpdate = MainDoc2.CreateElement("LastUpdate");
                LastUpdate.InnerText = output[i][11];
                Element.AppendChild(LastUpdate);

                XmlNode Website = MainDoc2.CreateElement("Website");
                Website.InnerText = output[i][12];
                Element.AppendChild(Website);

                XmlNode Email = MainDoc2.CreateElement("Email");
                Email.InnerText = output[i][13];
                Element.AppendChild(Email);

                XmlNode Phone = MainDoc2.CreateElement("Phone");
                Phone.InnerText = output[i][14];
                Element.AppendChild(Phone);

                XmlNode Fax = MainDoc2.CreateElement("Fax");
                Fax.InnerText = output[i][15];
                Element.AppendChild(Fax);

                XmlNode IsFound = MainDoc2.CreateElement("IsFound");
                IsFound.InnerText = output[i][16];
                Element.AppendChild(IsFound);
            }

            MainDoc2.Save("C:\\Users\\User\\Downloads\\Telegram Desktop\\output.xml");
        }