BitrixAQA.Selenium.General.GM.CheckContentOnErrors C# (CSharp) Method

CheckContentOnErrors() public static method

Метод проверки контента страницы на ошибки
public static CheckContentOnErrors ( ) : void
return void
        public static void CheckContentOnErrors()
        {
            string input = BitrixFramework.WebDriver.PageSource.ToLower();
            bool gotError = false;

            if (input != null)
            {
                //варнинг
                if ((input.Contains("warning") && input.Contains(" on line ")))
                {
                    Log.Gap();
                    Log.MesError("На странице Warning \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                if (input.Contains("ErrorException"))
                {
                    Log.Gap();
                    Log.MesError("На странице ErrorException \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //фатал
                if (input.Contains("fatal error") && input.Contains(" on line "))
                {
                    Log.Gap();
                    Log.MesError("На странице Fatal error. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //парс еррор
                if (input.Contains("parse error") && input.Contains(" on line "))
                {
                    Log.Gap();
                    Log.MesError("На странице Parse error \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //db error
                if (input.Contains("mssql query error") || input.Contains("mysql query error") || input.Contains("oracle query error"))
                {
                    Log.Gap();
                    Log.MesError("Случилась ошибка базы. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //деприкейтед
                if (input.Contains("deprecated") && input.Contains(" on line "))
                {
                    Log.Gap();
                    Log.MesError("На странице что-то deprecated \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //is not a component
                if (input.Contains("is not a component"))
                {
                    Log.Gap();
                    Log.MesError("Отсутствует какой-то компонент на странице. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //404
                if (input.Contains("404 not found"))
                {
                    Log.Gap();
                    Log.MesError("404 not found. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //ошибка установки
                if (input.Contains("ошибка установки") && !input.Contains("<div id=\"error_text\"></div>") && !input.Contains("исправлена ошибка установки"))
                {
                    Log.Gap();
                    Log.MesError("Ошибка установки. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    string spanID = DateTime.Now.Ticks.ToString();
                    Log.MesNormal(String.Format("{0} ",
                        "<div style=\"margin: 0px 0px 0px 50px;\"><font size=\"2\" face=\"Verdana\"><a class=\"plus\" href=\"\" onclick=\"return collapse('" +
                        spanID + "', this)\">input: </a></font></div><br><span style=\"display:none;\" id=\"" + spanID + "\">" + input.Replace('<', '[').Replace('>', ']')));
                    gotError = true;
                }

                //раздел не найден
                if (input.Contains("раздел не найден"))
                {
                    Log.Gap();
                    Log.MesError("Раздел не найден. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //элемент не найден
                if (input.Contains("элемент не найден"))
                {
                    Log.Gap();
                    Log.MesError("Элемент не найден. \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //не найден шаблон
                if (input.Contains("can not find") && input.Contains("template with page"))
                {
                    Log.Gap();
                    Log.MesError("Не найден шаблон компонента \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //не передан ID инфоблока
                if (input.Contains("не передан id инфоблока"))
                {
                    Log.Gap();
                    Log.MesError("Не передан ID инфоблока \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //exception
                if (input.Contains("exception") && !input.Contains("tab_cont_exceptions") && !input.Contains("BadFunctionCallException") && !input.Contains(".exception."))
                {
                    Log.Gap();
                    Log.MesError("Exception \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //server error
                if (input.Contains("server error"))
                {
                    Log.Gap();
                    Log.MesError("Server Error \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //is not installed
                if (input.Contains("is not installed") && !input.Contains("Pspell extension is not installed"))
                {
                    Log.Gap();
                    Log.MesError("что-то is not installed \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //notselectediblock
                if (input.Contains("не выбран инфоблок"))
                {
                    Log.Gap();
                    Log.MesError("где-то не выбран инфоблок \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //Веб-форма не найдена
                if (input.Contains("Веб-форма не найдена"))
                {
                    Log.Gap();
                    Log.MesError("Веб-форма не найдена \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //ошибка при выполнении скрипта
                if (input.Contains("Блог не найден"))
                {
                    Log.Gap();
                    Log.MesError("Блог не найден \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //ошибка при выполнении скрипта
                if (input.Contains("Включить расширенный вывод ошибок можно в файле настроек .settings.php"))
                {
                    Log.Gap();
                    Log.MesError("При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php \r\nУрл: " + BitrixFramework.WebDriver.Url);
                    gotError = true;
                }

                //если была запущена проверка всех урлов и найдена ошибка, то публикуем в лог страницу, на которой была найдена проверяемая ссылка
                if (CheckUrls.sourceUrl != "" && gotError==true)
                    Log.MesCustom("Страница, где была найдена ссылка: " + CheckUrls.sourceUrl, System.Drawing.Color.Red);
            }
        }

Usage Example

Example #1
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);
        }