Пример #1
0
 /// <summary>
 /// Метод выполняет последовательно действия, переданные в него коллекцией.
 /// В зависимости от значения cbDebugMode, метод завершает текущее действие и переходит к следующему при появлении исключения,
 /// либо останавливается на исключении.
 /// </summary>
 /// <param name="TestCases">Список действий (методов) для последовательного выполнения. Методы не должны возвращать значение</param>
 public static void Execute(List <Action> TestCases)
 {
     foreach (Action TestCase in TestCases)
     {
         try
         {
             TestCase.Invoke();
         }
         catch (OpenQA.Selenium.UnhandledAlertException)
         {
             Log.MesQuestion("неожиданное модальное окно. <a href=\"" + ScreenCapture.Printscreen() + "\">скриншот</a>");
             BitrixFramework.Wait(5);
             BitrixFramework.BrowserAlert(false);
             Log.NodeClose();
         }
         catch (WebException e)
         {
             Log.MesError("Словили Вэб-эксепшен =( Видимо отвалился вебдрайвер.\r\n" + e.Message + "\r\n" + e.StackTrace +
                          "\r\nStatus Code : " + ((HttpWebResponse)e.Response).StatusCode +
                          "\r\nStatus Description : " + ((HttpWebResponse)e.Response).StatusDescription);
             Log.NodeClose();
         }
         catch (OpenQA.Selenium.WebDriverException e)
         {
             Log.MesError("Словили Вэб-эксепшен =( \r\n" + e.Message + "\r\n" + e.StackTrace);
             BitrixFramework.Refresh();
             Log.NodeClose();
         }
         catch (Exception Ex)
         {
             Log.MesError(Ex.Message + "\r\n" + Ex.StackTrace);
             Log.NodeClose();
         }
     }
 }
        /// <summary>
        /// Удаление данных магазина
        /// </summary>
        public static void DeleteAllData()
        {
            BitrixFramework.Wait(3);
            string PHPCommand =
                Case_Sale_Helper.DeleteInnerAccounts(true) +
                Case_Sale_Helper.DeleteTaxRate(true);

            GM.RunPHPCommand(PHPCommand);
        }
Пример #3
0
 /// <summary>
 /// Проверка типа выбора местоположения
 /// </summary>
 public static void CheckSelectType()
 {
     Log.NodeOpen("Проверка типа выбора местоположения");
     Case_Sale_Helper.ChangePlacementSelectType(false);
     Case_Sale_Helper.ValidatePlacementSelectType(false);
     BitrixFramework.Refresh();
     Case_Sale_Helper.ChangePlacementSelectType(true);
     Case_Sale_Helper.ValidatePlacementSelectType(true);
     Log.NodeClose();
 }
Пример #4
0
        /// <summary>
        /// Общий раннер класса
        /// </summary>
        public static void Run()
        {
            Log.NodeOpen("тест Интернет-магазина");
            BitrixFramework.OpenURL("http://" + Options.GetOption("/Options/URLS/edition[@title='BB']/mysql"));
            Case_General_Login.Login(TestUsers.Admin.Login, TestUsers.Admin.Password);
            List <Action> TestCases = new List <Action>();

            TestCases.Add(() => Case_Sale_Placements.CheckSelectType());
            Shared.Execute(TestCases);

            Log.NodeClose();
        }
Пример #5
0
        /// <summary>
        /// Общий раннер класса
        /// </summary>
        public static void Run()
        {
            Log.Gap();
            Log.NodeOpen("Тест Главного модуля");
            BitrixFramework.OpenURL("http://" + Options.GetOption("/Options/URLS/edition[@title='BB']/mysql"));
            Case_General_Login.Login(TestUsers.Admin.Login, TestUsers.Admin.Password);
            List <Action> TestCases = new List <Action>();

            TestCases.Add(() => Case_Main_Users.Run());
            Shared.Execute(TestCases);

            Log.NodeClose();
        }
Пример #6
0
 /// <summary>
 /// Метод для очистки тестовых данных
 /// </summary>
 /// <param name="edition">Редакция</param>
 /// <param name="DBType">Тип базы</param>
 public static void Clear(string edition, string DBType)
 {
     Log.Gap();
     Log.MesNormal("Старт очистки тестовых данных");
     // идем в админку на стр пользователи
     Case_Main.OpenAdmin();
     //Закрываем модальное окно Битрикс24 - Единая авторизация
     if (TO_Main.CheckBox_NetworkDontshow().Displayed())
     {
         TO_Main.CheckBox_NetworkDontshow().ClickAndWait();
         TO_AdminPanel.Button_Close().ClickAndWait();
     }
     Case_Main.AdminLeftMenu("Настройки");
     Case_Main.AdminLeftSubMenu("Пользователи", "Список пользователей");
     if (TO_Users.Region_Admin_UsersList().AssertTextMatching(TestUsers.Petr.Email))
     {
         Log.MesNormal("Найден тестовый пользователь Петров с прошлого теста. Удаляем");
         // удаляем Петрова
         TO_Users.Checkbox_Admin_User(edition, DBType, TestUsers.Petr.Name, TestUsers.Petr.LastName).Click();
         TO_Users.Button_Admin_Delete().Click(false);
         BitrixFramework.BrowserAlert(true);
         TO_General.Region_Wait().WaitWhileElementExists();
         // проверяем что удален
         BitrixFramework.Refresh();
         TO_Users.Link_Admin_UserEmail(TestUsers.Petr.Email).NOTExists("Пользователь " + TestUsers.Petr.Email + " успешно удален", "Пользователь " + TestUsers.Petr.Email + " не удален");
     }
     else
     {
         Log.MesPass("Тестовый пользователь Петров уже удален.");
     }
     if (TO_Users.Region_Admin_UsersList().AssertTextMatching(TestUsers.S***n.Email))
     {
         Log.MesNormal("Найден тестовый пользователь Синичкин с прошлого теста. Удаляем");
         // удаляем Синичкина
         TO_Users.Checkbox_Admin_User(edition, DBType, TestUsers.S***n.Name, TestUsers.S***n.LastName).Click();
         TO_Users.Button_Admin_Delete().Click(false);
         BitrixFramework.BrowserAlert(true);
         TO_General.Region_Wait().WaitWhileElementExists();
         // проверяем что удален
         BitrixFramework.Refresh();
         TO_Users.Link_Admin_UserEmail(TestUsers.S***n.Email).NOTExists("Пользователь " + TestUsers.S***n.Email + " успешно удален", "Пользователь " + TestUsers.S***n.Email + " не удален");
     }
     else
     {
         Log.MesPass("Тестовый пользователь Синичкин уже удален.");
     }
     TO_AdminPanel.Tab_AdminViewTab().Click();
     Case_Main.OpenPublic();
     Case_General_Login.Logout();
     Log.MesPass("Очистка тестовых демо-пользователей завершена");
 }
Пример #7
0
        /// <summary>
        /// Кейс выполнения php команды в админ. части
        /// </summary>
        /// <param name="PhpCommand">текст команды</param>
        public static void RunPHPCommand(string PhpCommand)
        {
            //идем на страницу выполнения php команды
            BitrixFramework.OpenURL(BitrixFramework.Host() + "/bitrix/admin/php_command_line.php");

            //отключаем подсветку синтаксиса
            GM.BacklightCodeSwitcher(false);

            //вставляем команду, выполняем
            TO_General.Textbox_PhpCommand.PasteText(PhpCommand, false, HideMessage: true);
            BitrixFramework.Wait(3);
            TO_General.Button_ExecutePhpCommand.ClickAndWait(checkErrors: false);
            BitrixFramework.BrowserAlert(true);
            BitrixFramework.Wait(3);
        }
 /// <summary>
 /// Смена типа выбора местоположения
 /// </summary>
 /// <param name="isList">Список или поиск</param>
 public static void ChangePlacementSelectType(bool isList)
 {
     Case_Main.OpenAdmin();
     BitrixFramework.Wait(2);
     Case_Main.OpenSettings();
     Case_Main.OpenSettings();
     Case_Main.AdminLeftSubMenu("Настройки продукта", "Настройки модулей");
     Case_Main.AdminLeftSubSubMenu("Настройки модулей", "Интернет-магазин");
     TO_Sale_Placements.Region_Placements.Scroll();
     if (isList)
     {
         TO_Sale_Placements.DropDown_PlacementsSelectType.SendKeys(OpenQA.Selenium.Keys.Home, false);
         Log.MesPass("Установлен тип выбора местоположения выпадающие списки");
     }
     else
     {
         TO_Sale_Placements.DropDown_PlacementsSelectType.SendKeys(OpenQA.Selenium.Keys.End, false);
         Log.MesPass("Установлен тип выбора местоположения выпадающие строка поиска");
     }
     TO_Main.Button_Update().ClickAndWait();
     BitrixFramework.Wait(5);
 }
Пример #9
0
        /// <summary>
        /// Метод включает/отключает подсветку кода в редакторе php команды
        /// </summary>
        /// <param name="turnBacklightOn">true - включить подстветку, false - отключить</param>
        public static void BacklightCodeSwitcher(bool turnBacklightOn)
        {
            if (turnBacklightOn)
            {
                if (TO_General.Button_BacklightCodeOff.Exists())
                {
                    TO_General.Button_BacklightCodeOff.Click(true, false);
                }
            }
            else
            {
                if (TO_General.Button_BacklightCodeOn.Exists())
                {
                    TO_General.Button_BacklightCodeOn.Click(true, false);
                    BitrixFramework.Refresh();

                    if (TO_General.Button_BacklightCodeOn.Exists())
                    {
                        TO_General.Button_BacklightCodeOn.Click(true, false);
                    }
                }
            }
        }
Пример #10
0
        /// <summary>
        /// Метод запуска проверки урлов
        /// </summary>
        /// <param name="urlToCheck">Проверяемый урл</param>
        /// <param name="isAdmin">Признак проверки в админке или публичке</param>
        public static void Run(string urlToCheck, string isAdmin = "false")
        {
            Log.Gap();
            Log.MesNormal("Проверка всех урлов на наличие ошибок на сайте " + urlToCheck);

            lCheckOnes = new List <string>(MainForm.form.tbCheckOnce.Text.Replace("\r", "").Split('\n').Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList());

            if (Directory.Exists(urlToCheck + "CTest"))
            {
                BitrixFramework.OpenURL(urlToCheck, false, false);
            }
            else
            {
                BitrixFramework.OpenURL(urlToCheck, false);
            }
            try
            {
                if (isAdmin == "true")
                {
                    Case_Main.OpenAdmin();
                }
                if (MainForm.form.tbCheckUrlsLogin.Text.Trim() != "" && MainForm.form.tbCheckUrlsPass.Text.Trim() != "" && !urlToCheck.Contains(".bitrix24."))
                {
                    Case_General_Login.LoginAdminArea(MainForm.form.tbCheckUrlsLogin.Text.Trim(), MainForm.form.tbCheckUrlsPass.Text.Trim());
                }
            }
            catch { }

            BitrixFramework.OpenURL(urlToCheck, false);
            if (isAdmin == "true")
            {
                Case_Main.OpenAdmin();
            }
            else
            {
                Case_Main.OpenPublic();
            }

            var queueToCheck = new Queue <string>();

            queueToCheck.Enqueue(urlToCheck);

            FillCheckMasksCollection();

            //очищаем список ссылок
            Links.Clear();

            while (queueToCheck.Count > 0)
            {
                CheckAllUrls(queueToCheck, urlToCheck, queueToCheck.Dequeue(), isAdmin);
            }

            //выводим в лог все пройденные ссылки
            Log.NodeOpen("Ссылки:", collapsed: false);
            for (int link = 0; link < Links.Count; link++)
            {
                Log.MesNormal(Links[link].Item2);
            }
            Log.NodeClose();

            Log.Gap();
            Log.MesNormal("Проверка завершена");
        }
Пример #11
0
        /// <summary>
        /// Метод получает все урлы сайта
        /// </summary>
        /// <param name="queueToCheck">линки для проверки</param>
        /// <param name="host">хост в формате http://host.ru</param>
        /// <param name="UrlTocheck">урл для проверки в формате http://host.ru/ </param>
        /// <param name="isAdmin">Признак настройки правил для админки или публички</param>
        public static void CheckAllUrls(Queue <string> queueToCheck, string host, string UrlTocheck, string isAdmin = null)
        {
            string checkHost  = host;
            int    countStart = countTotalUrl;
            Uri    tmpUtl;

            //подставляем в проверяемый урл http:// если его не было
            if (host.IndexOf("http://") < 0 && host.IndexOf("https://") < 0 && host.IndexOf("ftp://") < 0)
            {
                host = "http://" + host;
            }

            if (host.Replace("//", "").IndexOf("/") < 0)
            {
                host = host + "/";
            }

            //получаем чистый хост без http
            string pattern     = "[a-z]+://([^/]+)/.*";
            string replacement = "$1";
            Regex  rgx         = new Regex(pattern);
            string clearHost   = rgx.Replace(host, replacement);

            //получаем в sourceUrl урл страницы, на которой нашли проверяемый урл
            for (int link = 0; link < Links.Count; link++)
            {
                if (Links[link].Item2 == UrlTocheck)
                {
                    //в сурс урл передаем страницу, на которой ищем урлы
                    sourceUrl = Links[link].Item3;
                }
            }

            //проверяем опцию проверки страницы на наличие ошибок
            if (MainForm.form.cbUrlsCheckPageOnErrors.Checked)
            {
                BitrixFramework.CheckJSErrors();
                BitrixFramework.OpenURL(UrlTocheck, false);
            }
            else
            {
                BitrixFramework.CheckJSErrors();
                BitrixFramework.OpenURL(UrlTocheck, false, false);
            }
            string html = TO_General.Region_AllPage().innerHTML;

            if (html == null)
            {
                html = "";
            }
            string HRefPattern = @"(?i)<\s*?a\s+[\S\s\x22\x27\x3d]*?href=[\x22\x27]?([^\s\x22\x27<>]+)[\x22\x27]?.*?>";
            string ImgPattern  = @"(?i)<[\S\s\x22\x27\x3d]*?img src=[\x22\x27]?([^\s\d\x22\x27<>]+)[\x22\x27]?.*?>";
            string Img1Pattern = @"(?i)<[\S\s\x22\x27\x3d]*?background-image: url[\x28]?([^\x28\x29<>]+)[\x29]?.*?>";
            string Img2Pattern = @"(?i)<[\S\s\x22\x27\x3d]*?background: url[\x28]?[\x27]?([^\x27<>]+)[\x27]?[\x29]?.*?>";
            Match  m;

            string[] Patterns;
            //В зависимости от флага на форме проверяем или нет картинки
            if (MainForm.form.cbCheckImages1.Checked)
            {
                Patterns = new[] { HRefPattern, ImgPattern, Img1Pattern, Img2Pattern }
            }
            ;
            else
            {
                Patterns = new[] { HRefPattern }
            };
            foreach (string Pattern in Patterns)
            {
                m = Regex.Match(html, Pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);

                //смотрим, подходит ли нам найденный урл
                while (m.Success)
                {
                    //дубль
                    bool foundDouble = false;
                    //внешняя ссылка
                    bool externalLink = false;
                    //уже добавленный в коллекцию урл, после проверки на маски
                    #pragma warning disable 0219
                    bool addedAfterMasks = false;
                    #pragma warning restore 0219
                    string workString = null;
                    workString = m.Groups[1].Value;

                    #region Условия и ограничения
                    Dictionary <string, bool> Permissions = new Dictionary <string, bool>();
                    Permissions.Add("javascript:void(0)", false);
                    Permissions.Add("javascript:", false);
                    Permissions.Add("rss", false);
                    Permissions.Add("/bitrix/rk.php", false);
                    Permissions.Add("/bitrix/redirect.php", false);
                    Permissions.Add("trackback", false);
                    Permissions.Add("ACTION=SET_BE_READ", false);
                    Permissions.Add("manual.zip", false);
                    Permissions.Add("lang=en", false);
                    Permissions.Add("mode=excel", false);
                    Permissions.Add("?EXCEL=Y", false);
                    Permissions.Add("excel=yes", false);
                    Permissions.Add("fileman_admin.php", false);
                    Permissions.Add("month", false);
                    Permissions.Add("login", false);
                    Permissions.Add("sessid", false);
                    Permissions.Add("logout", false);
                    //Permissions.Add("register", false);
                    //Permissions.Add("bitrix_include_areas", false);
                    Permissions.Add("change_password", false);
                    Permissions.Add("forgot_password", false);
                    Permissions.Add("print=", false);
                    Permissions.Add("clear_cache", false);
                    Permissions.Add("/webdav_bizproc_history_get/", false);
                    Permissions.Add("show_include_exec_time", false);
                    Permissions.Add("show_page_exec_time", false);
                    Permissions.Add("show_sql_stat", false);
                    Permissions.Add("show_link_stat", false);
                    Permissions.Add("action", false);
                    Permissions.Add("#message", false);
                    Permissions.Add("tags", false);
                    Permissions.Add(".flv", false);
                    Permissions.Add(".xlsx", false);
                    Permissions.Add(".xls", false);
                    Permissions.Add(".docx", false);
                    Permissions.Add(".ppt", false);
                    Permissions.Add(".pptx", false);
                    Permissions.Add(".txt", false);
                    Permissions.Add(".png", false);
                    //Permissions.Add(".jpg", false);
                    Permissions.Add(".doc", false);
                    Permissions.Add(".csv", false);
                    Permissions.Add(".exe", false);
                    Permissions.Add(".config", false);
                    Permissions.Add(".xml", false);
                    Permissions.Add(".html", false);
                    Permissions.Add(".htm", false);
                    Permissions.Add(".ascx", false);
                    Permissions.Add(".log", false);
                    Permissions.Add(".asax", false);
                    Permissions.Add(".ico", false);
                    Permissions.Add(".odt", false);
                    Permissions.Add(".mp3", false);
                    Permissions.Add(".tar.gz", false);
                    Permissions.Add("ajax_meeting.php?fileId=", false);
                    Permissions.Add("FileManDownload.ashx", false);
                    Permissions.Add(".zip", false);
                    Permissions.Add("#", false);
                    Permissions.Add("callto:", false);
                    Permissions.Add("/chat/", false);
                    Permissions.Add("?RELOAD=Y", false);
                    Permissions.Add("&FILTERS=", false);
                    Permissions.Add("?FILTERS=", false);
                    Permissions.Add("/historyget/", false);
                    Permissions.Add("&company_search_LAST_NAME=", false);
                    Permissions.Add("getSample=csv", false);
                    Permissions.Add("tasks/?VIEW=", false);
                    Permissions.Add("show_file.php", false);
                    Permissions.Add("bitrix_include_areas=N", false);
                    Permissions.Add("bitrix_include_areas=Y", false);
                    Permissions.Add("company_search_LAST_NAME=", false);
                    Permissions.Add("users_LAST_NAME=", false);
                    Permissions.Add("contacts_search_LAST_NAME=", false);
                    Permissions.Add("FileMan.aspx?path=", false);
                    Permissions.Add("perfmon_tables.php", false);
                    Permissions.Add("?print_course=Y&COURSE_ID=", false);
                    Permissions.Add("perfmon_php.php?lang=ru", false);
                    Permissions.Add("perfmon_db_server.php", false);
                    Permissions.Add("update_system_market.php?module=", false);
                    Permissions.Add("site_mm", false);
                    Permissions.Add("sale_location_node", false);
                    //Permissions.Add("/communication/learning/", false);
                    Permissions.Add("learning/course", false);
                    Permissions.Add("learning/course.php?COURSE_ID=2&TYPE=Y", false);
                    Permissions.Add("__author_url__", false);
                    Permissions.Add("__post_url__", false);
                    Permissions.Add("www.firefox.com", false);
                    Permissions.Add("www.opera.com", false);
                    Permissions.Add("www.google.com", false);
                    Permissions.Add("www.microsoft.com", false);
                    Permissions.Add("www.doroga.tv", false);
                    Permissions.Add("/information/road/", false);
                    Permissions.Add("/personl/", false);
                    Permissions.Add("?PAGEN_1=2", false);
                    Permissions.Add("company/events.php", false);
                    Permissions.Add("ctest/", false);
                    Permissions.Add("week_start=", false);
                    Permissions.Add("mailto:", false);
                    Permissions.Add("www.1c-bitrix.ru", false);
                    if (isAdmin == "true")
                    {
                        Permissions.Add("/bitrix/admin/", true);
                    }
                    if (isAdmin == "false")
                    {
                        Permissions.Add("/bitrix/admin/", false);
                    }
                    #endregion

                    bool Condition = true;
                    foreach (KeyValuePair <string, bool> Pair in Permissions)
                    {
                        if (Pair.Value)
                        {
                            Condition = Shared.Validate(Condition && Shared.Validate(workString.IndexOf(Pair.Key) >= 0));
                        }
                        else
                        {
                            Condition = Shared.Validate(Condition && Shared.Validate(workString.IndexOf(Pair.Key) < 0));
                        }

                        if (!Condition)
                        {
                            break;
                        }
                    }
                    if (Condition)
                    {
                        //если есть &amp; заменяем на &
                        string ampPattern = @"&amp;";
                        Match  ampM;
                        ampM = Regex.Match(workString, ampPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);

                        workString = Regex.Replace(workString, ampPattern, "&", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);

                        //очищаем параметр бэкурл
                        if (workString.IndexOf("back_url") >= 0)
                        {
                            workString = workString.Replace(workString.Substring(workString.IndexOf("back_url") - 1), "");
                        }

                        if (workString.IndexOf("backurl") >= 0)
                        {
                            workString = workString.Replace(workString.Substring(workString.IndexOf("backurl") - 1), "");
                        }

                        if (workString.IndexOf("www.") >= 0 && workString.IndexOf(clearHost) < 0)
                        {
                            externalLink = true;
                        }

                        //комбинируем урл
                        try
                        {
                            if (Uri.TryCreate(new Uri(UrlTocheck), workString, out tmpUtl))
                            {
                                workString = tmpUtl.ToString();
                            }
                        }
                        catch
                        {
                            workString = (UrlTocheck + workString).Replace("//", "/");
                        }

                        //если ссылка не содержит проверяемый хост, то пропускаем ее, она внешняя
                        if (workString.IndexOf(checkHost) != 0)
                        {
                            externalLink = true;
                        }

                        if (Links.Count == 0 && !externalLink)
                        {
                            Links.Add(new Tuple <bool, string, string>(false, workString, UrlTocheck));
                        }

                        //проверяем найденный урл, не дублируется ли он
                        for (int link = 0; link < Links.Count; link++)
                        {
                            if (workString == Links[link].Item2)
                            {
                                foundDouble = true;
                                break;
                            }
                        }

                        //проверяем урл на соответствие маскам и добавляем новый уникальный урл в коллекцию для проверки
                        //if (!foundDouble && !externalLink)
                        //{
                        //    //проверяем урл на соответствие маскам
                        //    for (int mask = 0; mask < checkMasks.Count; mask++)
                        //    {
                        //        string maskPatter = host.Replace(".", "\\.") + checkMasks[mask].Item1;
                        //        Match maskMatch = Regex.Match(workString, maskPatter, RegexOptions.IgnoreCase | RegexOptions.Compiled);

                        //        //если урл удовлетворяет маске и количество таких урлов в не превышает urlsToCollect, то добавляем уникальный урл в коллекцию для проверки
                        //        if (maskMatch.Success && checkMasks[mask].Item2 < urlsToCollect)
                        //        {
                        //            //запоминаем данные из тюплы
                        //            string sourceMask = checkMasks[mask].Item1; //отработанная маска
                        //            int sourceCount = checkMasks[mask].Item2; //количество урлов по данной маске

                        //            //удаляем тюплу
                        //            checkMasks.Remove(checkMasks[mask]);

                        //            //добавляем тюплу со старой маской и увеличенным на 1 количество урлов по данной маске
                        //            checkMasks.Add(new Tuple<string, int>(sourceMask, sourceCount + 1));

                        //            Links.Add(new Tuple<bool, string, string>(false, workString, UrlTocheck));
                        //            countTotalUrl++;
                        //            addedAfterMasks = true;
                        //        }

                        //        //если тюпла с маской уже заполнена - не добавляем урл
                        //        if (maskMatch.Success && checkMasks[mask].Item2 >= urlsToCollect)
                        //            addedAfterMasks = true;
                        //    }
                        //}

                        //если ссылка не внешняя и не дубликат и не была добавлена по маскам, то добавляем в коллекцию на проверку
                        //if (!foundDouble && !externalLink && !addedAfterMasks)
                        if (!foundDouble && !externalLink)
                        {
                            Links.Add(new Tuple <bool, string, string>(false, workString, UrlTocheck));
                            countTotalUrl++;
                        }
                    }

                    m = m.NextMatch();

                    //выводим все урлы
                    //for (int link = 0; link < Links.Count; link++)
                    //{
                    //    Log.MesNormal(Links[link].Item2);
                    //}

                    //код очистки списка урлов по задданому вхождению
                    //for (int link = 0; link < Links.Count; link++)
                    //{
                    //    if (Links[link].Item2.Contains("?PAGEN_1=2"))
                    //    {
                    //        Links.Remove(Links[link]);
                    //    }
                    //}

                    ////ищем урлы по вхождению
                    //for (int link = 0; link < Links.Count; link++)
                    //{
                    //    if (Links[link].Item2.Contains("site_mm"))
                    //    {
                    //        //string whereWasFound = Links[link].Item3;
                    //        Links.Remove(Links[link]);
                    //    }
                    //}
                }
            }

            //помечаем ссылку как проверенную на наличие урлов
            for (int link = 0; link < Links.Count; link++)
            {
                if (Links[link].Item2 == UrlTocheck)
                {
                    //запоминаем данные из тюплы
                    string checkedUrl = Links[link].Item2; //проверенная только что ссылка
                    string sourceUrl  = Links[link].Item3; //страница, где была найдена только что проверенная ссылка

                    //удаляем тюплу
                    Links.Remove(Links[link]);

                    //добавляем тюплу со старым урлом и новым параметров - false, то есть помечаем урл, как проверенный на наличие новых урлов
                    Links.Add(new Tuple <bool, string, string>(true, checkedUrl, sourceUrl));
                }

                //выводим найденные линки в отчет
                //Log.MesNormal(Links[link].Item2);
            }

            //if (c > countStart)
            //if (c == 1500)
            //  Misc.AddToLog(c.ToString());

            for (int link = 0; link < Links.Count; link++)
            {
                //System.Threading.Thread.Sleep(1 * 1000);
                if (!Links[link].Item1)
                {
                    //CheckAllUrls(checkHost, Links[link].Item2);
                    if (!queueToCheck.Contains(Links[link].Item2))
                    {
                        queueToCheck.Enqueue(Links[link].Item2);
                    }
                }
            }
        }
    }
Пример #12
0
        /// <summary>
        /// Метод проверки компонентов
        /// </summary>
        /// <param name="edition">тип редакции установки</param>
        /// <param name="dbType">тип БД</param>
        public static void Run(string edition, string dbType)
        {
            List <DirectoryInfo> folders = new List <DirectoryInfo>();
            string        PathToDistr    = Options.GetOption("/Options/PathToFolderWhereToInstall/edition[@title='" + edition + "']/" + dbType);
            string        urlToCheck     = "http://" + Options.GetOption("/Options/URLS/edition[@title='" + edition + "']/" + dbType);
            string        searchPrefix   = MainForm.form.tbComponentsCheckPrefix.Text.Trim();
            DirectoryInfo targetDir      = new DirectoryInfo(PathToDistr + "bitrix\\components\\bitrix\\");

            Log.MesNormal("Проверка всех компонентов установки");

            //получаем все компоненты (имена папок)
            if (searchPrefix != "")
            {
                foreach (DirectoryInfo d in targetDir.GetDirectories("*" + searchPrefix + "*"))
                {
                    folders.Add(d);
                }
            }
            else
            {
                foreach (DirectoryInfo d in targetDir.GetDirectories())
                {
                    folders.Add(d);
                }
            }

            BitrixFramework.OpenURL(urlToCheck, CheckPageOnErrors: false);

            if (MainForm.form.tbCheckComponentsLogin.Text.Trim() != " " && MainForm.form.tbCheckComponentsPassword.Text.Trim() != "")
            {
                Case_General_Login.LoginAdminArea(MainForm.form.tbCheckUrlsLogin.Text.Trim(), MainForm.form.tbCheckUrlsPass.Text.Trim());
            }

            //для каждого компонента создаем отдельный файл php с именем компонента, в котором размещается код вызова компонента
            foreach (var componentsFolder in folders)
            {
                //создаем папку CTest, если нет
                if (!Directory.Exists(PathToDistr + "CTest"))
                {
                    Directory.CreateDirectory(PathToDistr + "CTest");
                }

                //удалем файл с именем компонента, если есть
                if (File.Exists(PathToDistr + "CTest\\" + componentsFolder.ToString() + ".php"))
                {
                    File.Delete(PathToDistr + "CTest\\" + componentsFolder.ToString() + ".php");
                }

                File.AppendAllText(PathToDistr + "CTest\\" + componentsFolder.ToString() + ".php",
                                   "<?require($_SERVER[\"DOCUMENT_ROOT\"].\"/bitrix/header.php\");$APPLICATION->SetTitle(\"Тест компонента без параметров: bitrix:" +
                                   componentsFolder.ToString() + "\");?> <?$APPLICATION->IncludeComponent(\"bitrix:" + componentsFolder.ToString() +
                                   "\", \"\", Array(), false);?><?require($_SERVER[\"DOCUMENT_ROOT\"].\"/bitrix/footer.php\");?>");
                if (MainForm.form.cbComponentsCheckPageOnErrors.Checked)
                {
                    BitrixFramework.OpenURL(urlToCheck + "/ctest/" + componentsFolder.ToString() + ".php", false);
                }
                else
                {
                    BitrixFramework.OpenURL(urlToCheck + "/ctest/" + componentsFolder.ToString() + ".php", false, false);
                    GM.CheckContentOnErrors();
                }
                Log.MesNormal("компонент - bitrix:" + componentsFolder.ToString() + " проверен");
            }

            Log.Gap();
            Log.MesNormal("Все компоненты проверены. Всего компонентов: " + folders.Count);
        }
Пример #13
0
 /// <summary>
 /// Переходим в админский раздел по прямому урлу в /bitrix/admin
 /// </summary>
 public static void Go2AdminArea()
 {
     BitrixFramework.OpenURL(BitrixFramework.Host() + "/bitrix/admin");
 }
Пример #14
0
 /// <summary>
 /// Метод для перехода в пункт левого админ меню Настройки
 /// </summary>
 public static void OpenSettings()
 {
     TO_AdminLeftMenu.Button_Settings.ClickAndWait(NoRefresh: true);
     BitrixFramework.Wait(5);
 }