Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Обобщить методы для работы с клиентами тестирования #513

Merged
merged 5 commits into from
Aug 23, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6538,15 +6538,14 @@
Ванесса.ЗапомнитьАктивноеОкно(НужноеОкно);

ПоляФормы = НужноеОкно.НайтиОбъекты(Тип("ТестируемоеПолеФормы"));
Если ПоляФормы.Количество() = 0 Тогда
ТекстСообщения = "У окна <%1> не найдено ни одного элемента с типом <ТестируемоеПолеФормы>.";
ДекорацииФормы = НужноеОкно.НайтиОбъекты(Тип("ТестируемаяДекорацияФормы"));
Если ПоляФормы.Количество() = 0 И ДекорацииФормы.Количество() = 0 Тогда
ТекстСообщения = "У окна <%1> не найдено ни одного элемента с типом <ТестируемоеПолеФормы> или <ТестируемаяДекорацияФормы>.";
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",НужноеОкно.Заголовок);
ВызватьИсключение ТекстСообщения;
КонецЕсли;

ПолеФормы = ПоляФормы[0];

ТекстЗаголовка = ПолеФормы.ТекстЗаголовка;
ТекстЗаголовка = СообщениеПредупреждения(ПоляФормы, ДекорацииФормы);

Если Найти(НРег(ТекстЗаголовка),НРег(Текст)) = 0 Тогда
ТекстСообщения = "В строке <%1> не найдена подстрока <%2>";
Expand Down Expand Up @@ -6577,19 +6576,45 @@
КонецЕсли;

ПоляФормы = НужноеОкно.НайтиОбъекты(Тип("ТестируемоеПолеФормы"));
Если ПоляФормы.Количество() = 0 Тогда
ДекорацииФормы = НужноеОкно.НайтиОбъекты(Тип("ТестируемаяДекорацияФормы"));
Если ПоляФормы.Количество() = 0 И ДекорацииФормы.Количество() = 0 Тогда
ВызватьИсключение "Было найдено окно предупреждения. А ожидалось, что таких окон не будет.";
КонецЕсли;

ПолеФормы = ПоляФормы[0];

ТекстЗаголовка = ПолеФормы.ТекстЗаголовка;
ТекстЗаголовка = СообщениеПредупреждения(ПоляФормы, ДекорацииФормы);

ТекстСообщения = "Было найдено окно предупреждения с текстом: <%1> А ожидалось, что таких окон не будет.";
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",ТекстЗаголовка);
ВызватьИсключение ТекстСообщения;
КонецПроцедуры

// В зависимости от версии платформы, текст предупреждения может находиться
// как в элементе <ТестируемоеПолеФормы>, так и в <ТестируемаяДекорацияФормы>.
//
// Параметры:
// ПоляФормы - ФиксированныйМассив - элементы, найденные с помощью НайтиОбъекты(Тип("ТестируемоеПолеФормы"))
// ДекорацииФормы - ФиксированныйМассив - элементы, найденные с помощью НайтиОбъекты(Тип("ТестируемаяДекорацияФормы"))
//
// Возвращаемое значение:
// Строка - текст предупреждения.
//
&НаКлиенте
Функция СообщениеПредупреждения(ПоляФормы, ДекорацииФормы)

Для Каждого ТекПоле Из ПоляФормы Цикл
Возврат ТекПоле.ТекстЗаголовка;
КонецЦикла;

Для Каждого ТекДекорация Из ДекорацииФормы Цикл
Если ТекДекорация.Имя = "Message" Тогда
Возврат ТекДекорация.ТекстЗаголовка;
КонецЕсли;
КонецЦикла;

Возврат "";

КонецФункции

&НаКлиенте
//Если появилось окно диалога я нажимаю на кнопку "ОК"
//@ЕслиПоявилосьОкноДиалогаЯНажимаюНаКнопку()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,128 @@
Возврат Результат;

КонецФункции

&НаКлиенте
Процедура ИдентифицироватьОкноПредупреждение(Знач ТестКлиент, Знач Пояснение = "", Знач ПропускатьПриОтсутствииПрав = Истина) Экспорт

ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "1С:Предприятие");
Если ТипЗнч(ОкноПредупреждение) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда
Возврат;
КонецЕсли;

ТекущаяИнформацияОбОшибке = ТестКлиент.ПолучитьТекущуюИнформациюОбОшибке();
Если ТипЗнч(ТекущаяИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда
ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ТекущаяИнформацияОбОшибке);
Иначе
ПодробноеПредставлениеОшибки = "";
КонецЕсли;

ТекстИсключения = ТекстИсключения(ОкноПредупреждение);
ЗакрытьВсеОткрытыеОкна(ТестКлиент);

Если ПропускатьПриОтсутствииПрав И ТекстИсключения = "Недостаточно прав для просмотра" Тогда
КонтекстЯдра.ПропуститьТест(ТекстИсключения);
КонецЕсли;

ТекстИсключения = СтрШаблон("Выявлено модальное окно:
|[%1] %2
|%3",
Пояснение,
ТекстИсключения,
ПодробноеПредставлениеОшибки);

КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключения);

КонецПроцедуры

&НаКлиенте
Функция ОсновноеОкно(ТестКлиент) Экспорт
КлиентсткиеОкнаТестируемогоПриложения = ТестКлиент.ПолучитьПодчиненныеОбъекты();
Для Каждого ТекОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл
Если ТекОкно.Основное Тогда
Возврат ТекОкно;
КонецЕсли;
КонецЦикла;
КонецФункции

&НаКлиенте
Процедура Пауза(ТестКлиент, КоличествоСекунд) Экспорт

ТестКлиент.ОжидатьОтображениеОбъекта(Тип("ТестируемаяФорма"), "ЗаведомоОтсутствующийОбъект",, КоличествоСекунд);

КонецПроцедуры

&НаКлиенте
Функция ТекстИсключения(ОкноПредупреждение) Экспорт

ТекстыЗаголовков = Новый Массив;
Для Каждого ТекПолеФормы Из ОкноПредупреждение.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл
ТекстыЗаголовков.Добавить(ТекПолеФормы.ТекстЗаголовка);
КонецЦикла;

Для Каждого ТекДекорацияФормы Из ОкноПредупреждение.НайтиОбъекты(Тип("ТестируемаяДекорацияФормы")) Цикл
Если ТекДекорацияФормы.Имя = "Message" Тогда
ТекстыЗаголовков.Добавить(ТекДекорацияФормы.ТекстЗаголовка);
КонецЕсли;
КонецЦикла;

Возврат СтрСоединить(ТекстыЗаголовков, " ");

КонецФункции

&НаКлиенте
Процедура ЗакрытьВсеОткрытыеОкна(ТестКлиент) Экспорт

ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), НСтр("ru = '1С:Предприятие'"));
НажатьПодходящуюКнопку(ОкноПредупреждение);

ОткрытыеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения"));
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если ТекОкно.Основное Или ТекОкно.НачальнаяСтраница Тогда
Продолжить;
КонецЕсли;

Попытка
ТекОкно.Закрыть();
Исключение
// Необходимо принудительно закрыть все окна, специальная обработка исключений не требуется.
КонецПопытки;

ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), НСтр("ru = '1С:Предприятие'"));
НажатьПодходящуюКнопку(ОкноПредупреждение);
КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура НажатьПодходящуюКнопку(ОкноПриложения) Экспорт

Если ТипЗнч(ОкноПриложения) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда
Возврат;
КонецЕсли;

Кнопки = ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяКнопкаФормы"));
Если Не ЗначениеЗаполнено(Кнопки) Тогда
Возврат;
КонецЕсли;

Для Каждого ТекПолеФормы Из ОкноПриложения.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл
Если СтрНачинаетсяС(НРег(ТекПолеФормы.ТекстЗаголовка), "данные были изменены")
Или СтрНачинаетсяС(НРег(ТекПолеФормы.ТекстЗаголовка), "сохранить данные") Тогда
Кнопки[1].Нажать();
Возврат;
КонецЕсли;
КонецЦикла;

Для Каждого ТекДекорацияФормы Из ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяДекорацияФормы")) Цикл
Если СтрНачинаетсяС(НРег(ТекДекорацияФормы.ТекстЗаголовка), "данные были изменены")
Или СтрНачинаетсяС(НРег(ТекДекорацияФормы.ТекстЗаголовка), "сохранить данные") Тогда
Кнопки[1].Нажать();
Возврат;
КонецЕсли;
КонецЦикла;

КонецПроцедуры
// } Plugin interface

// { Helpers
Expand Down Expand Up @@ -224,7 +346,7 @@
&НаКлиенте
Функция ТаймаутВСекундах()

Возврат 20;
Возврат 120;

КонецФункции

Expand Down Expand Up @@ -364,7 +486,5 @@

Возврат Результат;

КонецФункции


КонецФункции
// } Helpers
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="КнопкиКомандногоИнтерфейса" id="1">
<Representation>List</Representation>
Expand Down
Loading