Расширение тестируемого поля формы для поля ввода

Типы · Tested form field extension for an input field

Содержит свойства специфичные для поля вида ПолеВвода.

Полное описание, параметры и ограничения

Расширение тестируемого поля формы для поля ввода (Tested form field extension for an input field)

Расширение тестируемого поля формы для поля ввода (Tested form field extension for an input field)

Доступен, начиная с версии 8.3.2.

Методы:
ВвестиТекст (InputText)
Выбрать (StartChoosing)
ВыбратьИзСпискаВыбора (StartChoosingFromChoiceList)
ВыпадающийСписокОткрыт (DropListIsOpen)
ВыполнитьВыборИзВыпадающегоСписка (ExecuteChoiceFromDropList)
ВыполнитьВыборИзСпискаВыбора (ExecuteChoiceFromChoiceList)
ЗакрытьВыпадающийСписок (CloseDropList)
ОжидатьФормированияВыпадающегоСписка (WaitForDropListGeneration)
Открыть (Open)
ОткрытьВыпадающийСписок (OpenDropList)
ОтменитьРедактирование (CancelEdit)
Очистить (Clear)
ПолучитьОтображаемыйТекст (GetDisplayedText)
ПолучитьПредставлениеСпискаВыбора (GetChoiceListPresentation)
ПолучитьТекстРедактирования (GetEditText)
Создать (Create)
УвеличитьЗначение (IncreaseValue)
УменьшитьЗначение (DecreaseValue)

Описание:

Содержит свойства специфичные для поля вида ПолеВвода.

Доступность:

Тонкий клиент, толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.3.2.

Методическая информация

Практические примеры

Автоматизировать отмену своего файлового диалога без чтения файла

До нажатия кнопки ставим в очередь результат Отмена, ждём собственный статус и очищаем оставшуюся учебную очередь.

Где и как запускать

Полный клиентский модуль формы обработки в менеджере тестов, запущенном с /TESTMANAGER. Это не модуль тестируемой таблицы.

Подготовка

  1. Создайте собственную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Первый урок содержит полный модуль отдельной внешней обработки УчебнаяТаблицаТестирования; её данные только в памяти.

  2. Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.

  3. В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.

  4. Перед каждым тестом закройте и заново откройте таблицу в тестируемом клиенте. Исходно в ней A-01/Книга/3, B-02/Ручка/1, C-00/Бумага/2, без ранее установленной сортировки и редактирования.

  5. Каждый тест ищет точный учебный заголовок и таблицу ТаблицаТоваров внутри этой формы. Не заменяйте селекторы на * или первый найденный элемент рабочего приложения.

  6. Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
    Приложение.УстановитьСоединение();
    ИсходныйЛимит = Неопределено;
    ОшибкаТеста = "";
    Попытка
        Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная таблица guide-owned-ui-2026", , 10);
        Таблица = Форма.ПолучитьОбъект(Тип("ТестируемаяТаблицаФормы"), , "ТаблицаТоваров", 10);
        ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
        Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
        Кнопка = Форма.ПолучитьОбъект(Тип("ТестируемаяКнопкаФормы"), , "КнопкаУчебныйДиалогФайла", 10);
        Приложение.ОчиститьРезультатДиалогаВыбораФайла();
        ОшибкаДиалога = "";
        Попытка
            Приложение.УстановитьРезультатДиалогаВыбораФайла(Ложь);
            Кнопка.Нажать();
            ПараметрыПроверки = Новый Структура("Форма,ИмяПоля,ОжидаемыйТекст", Форма, "ПолеУчебногоСтатуса", "Отмена");
            Условие = Новый ОписаниеОповещения("УчебноеПолеДостиглоСостояния", ЭтотОбъект, ПараметрыПроверки);
            Если Не Приложение.ОжидатьСостояния(Условие, 5) Тогда
                ВызватьИсключение "Отмена собственного файлового диалога не подтверждена статусом";
            КонецЕсли;
        Исключение
            ОшибкаДиалога = ОписаниеОшибки();
        КонецПопытки;
        Попытка
            Приложение.ОчиститьРезультатДиалогаВыбораФайла();
        Исключение
            ВызватьИсключение "Учебная очередь не очищена: " + ОписаниеОшибки() + "; ошибка диалога: " + ОшибкаДиалога;
        КонецПопытки;
        Если Не ПустаяСтрока(ОшибкаДиалога) Тогда
            ВызватьИсключение ОшибкаДиалога;
        КонецЕсли;
        Сообщить("Собственный диалог отменён, файлы не читались");
    Исключение
        ОшибкаТеста = ОписаниеОшибки();
    КонецПопытки;
    ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
    Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
        ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
    КонецЕсли;
    Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры

&НаКлиенте
Функция ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит)
    ОшибкиЗавершения = "";
    Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
        Попытка
            Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
        Исключение
            ОшибкиЗавершения = "Не восстановлен лимит действий: " + ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    Попытка
        Приложение.РазорватьСоединение();
    Исключение
        ОшибкиЗавершения = ОшибкиЗавершения + " Не разорвано соединение: " + ОписаниеОшибки();
    КонецПопытки;
    Возврат ОшибкиЗавершения;
КонецФункции

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

Разбор по шагам

  1. Сначала открываем собственную таблицу в отдельном клиенте тестирования. Подключаемся только к 127.0.0.1:15380, ищем точный заголовок и внутреннее имя таблицы с таймаутами 10 секунд.

  2. Нужен расширенный fixture с собственным диалогом и статусом. Он не открывает и не записывает выбранный файл, только обрабатывает результат диалога.

  3. УстановитьРезультатДиалогаВыбораФайла вызывается до кнопки, открывающей диалог. Значения ставятся в очередь; одна установка применяется к одному вызову диалога.

  4. Ложь имитирует отмену; имя файла и индекс фильтра при этом не нужны. Для Истина они обязательны — не переносите сокращённый вызов в пример выбора.

  5. Показать диалог завершает через экспортную процедуру с массивом имён или Неопределено. Ожидаем собственный текст Отмена через функцию, не немедленно после Нажать.

  6. Очищаем очередь только отдельного собственного теста. Если системный диалог открылся без подготовленного результата, действия менеджера могут выдавать ошибку до ручного закрытия; не кликайте произвольное окно.

  7. После теста восстанавливаем исходный лимит действий и отдельно пытаемся разорвать соединение, даже при исключении. Ошибки завершения не скрываем; разрыв соединения не закрывает тестируемое приложение.

Как проверить результат

  1. Статус собственного fixture стал Отмена в пределах ожидания; отсутствие подтверждения вызывает объясняющую ошибку.

  2. Не выбран/прочитан/записан ни один файл. Очередь учебных результатов очищена и соединение разорвано.

Ожидаемый результат

Подготовлен конкретный безопасный тест отмены диалога с правильной очередностью действий.

На что обратить внимание

  1. Не очищайте очередь общих тестов или чужого менеджера.

  2. При сбое очереди закрывайте только фактически распознанный собственный системный диалог вручную.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Измерить серверный вызов собственной учебной кнопки

Очищаем счётчики отдельного теста, вызываем серверную функцию, читаем показатели и не называем их скоростью всего приложения.

Где и как запускать

Полный клиентский модуль формы обработки в менеджере тестов, запущенном с /TESTMANAGER. Это не модуль тестируемой таблицы.

Подготовка

  1. Создайте собственную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Первый урок содержит полный модуль отдельной внешней обработки УчебнаяТаблицаТестирования; её данные только в памяти.

  2. Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.

  3. В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.

  4. Перед каждым тестом закройте и заново откройте таблицу в тестируемом клиенте. Исходно в ней A-01/Книга/3, B-02/Ручка/1, C-00/Бумага/2, без ранее установленной сортировки и редактирования.

  5. Каждый тест ищет точный учебный заголовок и таблицу ТаблицаТоваров внутри этой формы. Не заменяйте селекторы на * или первый найденный элемент рабочего приложения.

  6. Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
    Приложение.УстановитьСоединение();
    ИсходныйЛимит = Неопределено;
    ОшибкаТеста = "";
    Попытка
        Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная таблица guide-owned-ui-2026", , 10);
        Таблица = Форма.ПолучитьОбъект(Тип("ТестируемаяТаблицаФормы"), , "ТаблицаТоваров", 10);
        ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
        Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
        Кнопка = Форма.ПолучитьОбъект(Тип("ТестируемаяКнопкаФормы"), , "КнопкаУчебныйСерверныйВызов", 10);
        Приложение.ОчиститьНакопленныеПоказателиПроизводительности();
        Кнопка.Нажать();
        Показатели = Приложение.ПолучитьНакопленныеПоказателиПроизводительности(Ложь);
        Для Каждого Пара Из Показатели Цикл
            Сообщить("Показатель " + Пара.Ключ + ": " + Строка(Пара.Значение));
        КонецЦикла;
        Вызовы = Неопределено;
        Если Не Показатели.Свойство("Вызовы", Вызовы) Тогда
            Если Не Показатели.Свойство("Calls", Вызовы) Тогда
                ВызватьИсключение "Поле количества вызовов не найдено в реальном результате";
            КонецЕсли;
        КонецЕсли;
        Сообщить(ТипЗнч(Вызовы) = Тип("Число"));
        Сообщить(Вызовы >= 1);
        ПолеСтатуса = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ПолеУчебногоСтатуса", 10);
        Сообщить(ПолеСтатуса.ПолучитьОтображаемыйТекст() = "Сервер вернул 3");
        СнимокСОчисткой = Приложение.ПолучитьНакопленныеПоказателиПроизводительности(Истина);
        Сообщить("Показателей в снимке с очисткой: " + Строка(СнимокСОчисткой.Количество()));
    Исключение
        ОшибкаТеста = ОписаниеОшибки();
    КонецПопытки;
    ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
    Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
        ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
    КонецЕсли;
    Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры

&НаКлиенте
Функция ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит)
    ОшибкиЗавершения = "";
    Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
        Попытка
            Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
        Исключение
            ОшибкиЗавершения = "Не восстановлен лимит действий: " + ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    Попытка
        Приложение.РазорватьСоединение();
    Исключение
        ОшибкиЗавершения = ОшибкиЗавершения + " Не разорвано соединение: " + ОписаниеОшибки();
    КонецПопытки;
    Возврат ОшибкиЗавершения;
КонецФункции

Разбор по шагам

  1. Сначала открываем собственную таблицу в отдельном клиенте тестирования. Подключаемся только к 127.0.0.1:15380, ищем точный заголовок и внутреннее имя таблицы с таймаутами 10 секунд.

  2. Нужен расширенный fixture с собственной кнопкой из первого урока этой группы. Она вызывает серверную функцию, возвращающую константу 3; записи базы не используются.

  3. ОчиститьНакопленныеПоказателиПроизводительности сбрасывает накопленный участок измерения. Это собственный изолированный тест, не общий сбор статистики рабочего приложения.

  4. ПолучитьНакопленныеПоказателиПроизводительности(Ложь) читает без сброса, Истина возвращает снимок и очищает накопленное.

  5. Имена Вызовы/Calls зависят от варианта встроенного языка менеджера тестов, поэтому проверяем оба фактических ключа. Нет выдуманного Requests или обращения к отсутствующему свойству.

  6. Вызовов ожидается хотя бы один, не строго один: отображение/обработчики могут вызвать дополнительные запросы. Длительность — серверные вызовы измеряемого участка, не доказательство полной скорости интерфейса.

  7. После теста восстанавливаем исходный лимит действий и отдельно пытаемся разорвать соединение, даже при исключении. Ошибки завершения не скрываем; разрыв соединения не закрывает тестируемое приложение.

Как проверить результат

  1. Три контрольных Истина: количество вызовов числовое и не меньше 1, поле статуса Сервер вернул 3.

  2. Фактические четыре показателя снимка проверьте по справке и языку менеджера. Не заявляйте заранее фиксированные байты или время.

Ожидаемый результат

Подготовлен конкретный измеряемый серверный участок с раздельным чтением и сбросом показателей.

На что обратить внимание

  1. Не измеряйте рабочее приложение, сбрасывая чужую накопленную статистику.

  2. Накопленные серверные показатели не являются профилировщиком всех клиентских операций.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.