/// <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); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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("Очистка тестовых демо-пользователей завершена"); }
/// <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); }
/// <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); } } } }
/// <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("Проверка завершена"); }
/// <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) { //если есть & заменяем на & string ampPattern = @"&"; 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); } } } } }
/// <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); }
/// <summary> /// Переходим в админский раздел по прямому урлу в /bitrix/admin /// </summary> public static void Go2AdminArea() { BitrixFramework.OpenURL(BitrixFramework.Host() + "/bitrix/admin"); }
/// <summary> /// Метод для перехода в пункт левого админ меню Настройки /// </summary> public static void OpenSettings() { TO_AdminLeftMenu.Button_Settings.ClickAndWait(NoRefresh: true); BitrixFramework.Wait(5); }