ivanov660 / TestingTool-3

Инструмент автоматизации тестирования ПО
Apache License 2.0
104 stars 24 forks source link

Ошибка при получении представления ячейки табличного поля #37

Closed SolovevaIV closed 5 years ago

SolovevaIV commented 5 years ago

Возникает ошибка при попытке получить значение ячейки таблицы Четкое и краткое описание ошибки или не верного поведения.

Воспроизведение Шаги по воспроизведению ошибки:

  1. Загружаю обработку Менеджер сценарного теста
  2. Пишу тест
  3. Создаю параметр
  4. Пытаюсь получить представление ячейки таблицы командами: -Получить представление данных -Команда : ПолучитьПредставлениеДанных -Сравнить данные

Ожидаемое поведение Значение ячейки записывается в указанный параметр

Screenshots default

Desktop (please complete the following information):

Дополнительно Есть ли способ как то получить значение ячейки таблицы

ivanov660 commented 5 years ago

Добрый день!

Проблема на сколько я понял следующая: Вы пытаетесь получить представление данных табличной части.

Причины Непонятное ограничение от API от 1С. В документации сказано: Если метод вызывается для поля, являющегося колонкой таблицы, которая не находится в режиме редактирования, будет сгенерирована ошибка.

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

Обходные пути

  1. Изменить алгоритм теста. Чтобы дать совет нам нужно понять что Вы хотите сделать. 2.! Думаю что поможет Сделать фейковое изменение формы см. ниже. а) Открыть через еще изменить форму б) Взять и перенести "Клиента" из списка формы на любую группу в) Теперь можно получить значение представления
  2. Воспользоваться сторонним API (Microsoft Automation UI) для получения значения, тут тоже не так все просто. Можно делать микс в сценарии применения разных апи.
  3. Воспользоваться API Selenium (браузер), есть также свои сложности - в частности нет команд перехода к строке, окон и т.д. - оперируем divами и др.

image

SolovevaIV commented 5 years ago

Добрый день!

image

Необходимо получить значение выбранной ячейки. Ваш способ, к сожалению, применить не получилось, так как при каждом запуске приложения настройки не сохраняются. Пробовали создать сценарий, по которому будем изменять поле таблицы на поле формы, к сожалению, в Менеджере сценарного тестирования нет команды перемещения (Drap&Drop), и сами элементы дерева он распознать не может.

Может быть есть методы, с помощью которых можно получить данное значение

ivanov660 commented 5 years ago

Замечания

  1. Настройки обычно сохраняются, если конечно не специфичный случай
  2. 1С API не предоставляет подобных вольностей - Drag&Drop работу с мышкой и клавиатурой.

Предложения

  1. Попробуйте следующий вариант. а) позиционируетесь на строке, затем на поле б) далее через еще открываете форму расширенного или обычного поиска в) в форме становитесь на поле ввода "что искать" и получаете представление. см. рис ниже.

  2. Иногда можно модифицировать формы конфигурации, воспользоваться расширением или создать дополнительную обработку - с необходимым функционалом для теста

image image

ivanov660 commented 5 years ago

Еще пример решения Вот еще пример как получить текст в параметр. Тут мы используем два апи - 1С и autoamtion ui. То что не может сделать 1С, выполняем с помощью automation ui (управление мышкой, отправка комбинаций клавиш, работа с clipboard. Рисунки ниже.

Как это сделать?

  1. Пишем код на 1С api. До момента позиционирования на строке и ячейке табличной части
  2. Далее делаем вставку из трех блоков (можно записать): а) подключение (указать в api automation ui) б) найти окно (указать в api automation ui) в) команду: (получить текст под фокусом) или отправить key (simulate) Ctrl+C + Получить из буфера обмена 3) далее опять подключение к 1С api и дальнейший код

Замечание

image

image

Снимок отчета по результатам выполнения теста для Фреймворка "Тестирование 3.0"

image

SolovevaIV commented 5 years ago

Спасибо большое за варианты, будем применять. Ждем видеоуроков :)

ivanov660 commented 5 years ago

@SolovevaIV могли бы вы детализировать по видео-урокам. Заранее спасибо. 1) А в каком направлении и о чем интересно было бы чтобы мы рассказали в видео уроках? Примеры использования, первые шаги, что-то другое? 2) Какие темы не раскрыты? 3) Какие возникают сложности при использовании инструментов?

SolovevaIV commented 5 years ago

Возникают некоторые вопросы, скорее связанные с моим недопониманием, в частности:

  1. Я создаю тесты с помощью менеджера сценарного теста
  2. Я хочу запускать их по нажатию пары кнопок
  3. Для этого мне необходимо добавить их в планировщик
  4. С помощью конструктора я добавляю тесты в задания
  5. Далее возникают трудности, а именно в чем заключается отличие проверки от прохождения самого теста

В моем понимании мне необходимо созданные тесты добавить в какой-либо локальный репозиторий, и выбранные мною тесты запускать, по результатам окончания процесса выполнения тестов я формирую отчет.

Не могу разобраться когда какие элементы конфигурации применять, так как для меня остался не раскрыт полный процесс тестирования.

А видео-уроки буду ждать по применению WinAutomationUI, надеюсь они будут:)

ivanov660 commented 5 years ago
  1. Да, все верно. Менеджер сценарного теста это полноценный IDE. В нем создаются тесты с использованием записи и/или в режиме конструктора.

  2. Чтобы тесты запускались по нажатию "пары кнопок" необходимо использовать конфигурацию "тестирование". Для этого последовательно необходимо сделать следующую последовательность действий (настройку базы не рассматриваем) Пример видео: запуск и выполнение тестов а) Подсистема тестирование. Создать новый элемент в справочнике "Тесты", указав путь к сценарию тестирования. б) Подсистема планировщик. Создать новое задание с помощью конструктора заданий "Сценарий UI" и указать элемент справочника а) в качестве теста. в) Подсистема планировщик. Создать новое задание проверки (одно на тестируемую базу) или в текущее задание проверки добавить задание выполнения теста шаг б)

  3. Чтобы проверка запускалась автоматически, то ее можно добавить в планировщик и настроить расписание.

  4. Совершенно верно. Пункт выше 2 б).

  5. Поясняю. Обычное задание - запускает 1 (один) тест. Задание проверки - запускает "все" тесты (там в конструкторе есть табличка, где указываете список обычных заданий). Это последовательный и параллельный запуск всех тестов (ожидание прохождения всех тестов). И все выполненные тесты в рамках проверки получают один идентификатор в отчете.

Поясню на пальцах)

image

В моем понимании мне необходимо созданные тесты добавить в какой-либо локальный репозиторий, и выбранные мною тесты запускать, по результатам окончания процесса выполнения тестов я формирую отчет.

А) Да, Вы добавляете все файлы тестов в репозиторий - оптимально GIT. Б) Если вы запускаете тесты вручную, а не автоматически. Загружайте их с помощью обработки (загрузка отчетов allure или Juint - зависит от выбранного формата). При загрузке указываете номер проверки (создаете новую, если проверяете новый релиз) и базу на которой выполняете тестирование. В) Отчет - это обработка AllureSkin автоматически формирует отчет, как только вы подгружаете новые результаты

Не могу разобраться когда какие элементы конфигурации применять, так как для меня остался не раскрыт полный процесс тестирования.

Подсистемы: Тестирование - все что связано с тестами Планировщик - все что связано с заданиями Справочники: Тесты - указываете имя теста и путь к файлам сценария Задание - позволяет запускать автоматически один тест или проверку (все тесты) Тестируемый клиент и база 1с - указываете параметры базы, на которой проверяете. Дополнительные обработки - полезные отчеты и действия Проверка - сущность по которой можно сгруппировать результаты тестов

SolovevaIV commented 5 years ago

Огромное спасибо за помощь. Теперь все стало намного яснее!

SolovevaIV commented 5 years ago

Добрый день! Не удается запустить тесты, не знаю в чем может быть проблема:

  1. Создала сценарные тесты (загрузила из файла скрипт, который создан с помощью менеджера сценарного теста) image

  2. Перехожу в планировщик для создания задания.

  3. По кнопке "Создать по шаблону" почему то нет шаблонов, поэтому загружаю конструктор из файла image

  4. Создала задание и задание проверку image

  5. Перехожу в планировщик и создаю задание для выполнения image

  6. Для выполнения задания нажимаю "Выполнить сейчас" и перехожу в "Обзор и управление выполнением заданий" image

Тесты не выполняются, указаны по два раза потому что один набор тестов для текущей 22 сборки и такой же набор для 12 сборки (прекратить ее не получается)

Насколько я понимаю может быть проблема в настройке базы. Хотелось бы узнать, что необходимо указывать в настройке Тестируемые клиенты? Как я поняла, большинство значений переменных берется из этой настройки. image Сами настройки базы указаны верно

ivanov660 commented 5 years ago

по порядку:

  1. Для того чтобы заработал п.3. Вам надо выполнить следующие действия: а) перейти в подсистему "Администрирование" б) открыть "Дополнительные отчеты и обработки" в) загрузить обработки из файлов: image г) открыть "настройка создания заданий" и указать в списке, те обработки, которые являются заданиями: image

2) Чтобы для пользователя открывалась всегда обработка allure skin на рабочем столе, необходимо а) загрузить обработку AllreSkin дополнительные отчеты и обработки в) далее открыть "настройки рабочего места начальной страницы " г) создать запись, указать пользователя и обработку image

3) Давайте проверим что настроено регламентное задание (судя по всему - оно не настроено) а) перейдите в Администрирование б) откройте Консоль заданий, "Сервис->Консоль заданий" в) настройке два заданий: укажите использовать, укажите пользователя администраторов в поле и настройке расписание выполнения

image г) после настройки у вас должны запуститься задания.

защита от запуска многократного одинаковых заданий стоит, но видимо не предусматривала запуск без активных заданий.

4) Далее для корректной работы задний (запуска сценариев) для службы под которой выполняется работа базы "Тестирование 3.0" должна быть активна настройка взаимодействия с рабочим столом. Иначе не корректно будет выполняться запуск и работа сценариев для платформы 1С.

image

5) Далее должны быть настроены пути для запуска тестов. а) перейдите в подсистему администрирования б) откройте "настройки работы пользователя на рабочем месте" в) для пользователя администратор + имя сервера укажите обязательно следующие пути (на сервере): Путь к исполняемому файлу 1С, Путь к каталогу GIT, Путь к каталогу библиотека сценариев, Путь к каталогу отчетов выполнения тестов (туда куда будут складываться тесты, Путь к внешнему сервису для автоматизации 'Win Automation UI'. image image

6) Если вы хотите, чтобы в тестах сохранялись картинки, то обязательно нужно создать задание запуска WinAutomationUI и включить его запуск в задание проверки (самое начало). Конструктор задания для этой задачи еще не готов, но его можно сделать руками, если требуется могу описать как.

ivanov660 commented 5 years ago
  1. У вас должны быть настроены как минимум две базы: Текущая база - это параметры подключения к базе "Тестирование 3.0", это требуется для запуска сценариев и загрузки отчетов Тестируемый клиент (к примеру, ТК ЕРП) - это другая база(ы), в которой выполняются проверки. В задании проверка вам надо выбирать тестируемый клиент (к примеру, ТК ЕРП). В видео уроке про эту особенность рассказыается
SolovevaIV commented 5 years ago

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

Если не составит труда, то было бы интересно узнать как сделать конструктор задания для WinAutomationUI

Помимо этого, из-за того что долго пыталась разобраться насоздавала много элементов, которые в дальнейшем не нужны, есть ли возможность их удалить после того, как я пометила их на удаление? Не смогла найти обработчик для удаления элементов.

ivanov660 commented 5 years ago
  1. Про удаление:

а). Если вы про удаление справочников, то через "все функции"->стандартные->удаление помеченных объектов. б). Для регистров по заданиям, то откройте форму регистра нажмите Ctrl+A и далее Del.

  1. Временное решение запуска в задании WinAutomationUI (как только будет конструктор создан, необходимо будет перейти на него ).

а) Создайте новое действие "Запустить ExternalAutomationUI" с типом "выполнить произвольный код":

`// I) если открыт, то закроем Сообщение = ""; PID = ПланировщикЗаданийСервер.ПолучитьЗначениеПользовательскойПеременной(Неопределено,"ExternAutomationUI 8080");

Если НЕ PID=Неопределено Тогда ПланировщикЗаданийКлиентСервер.ЗавершитьПроцессЛокально(PID,Сообщение); КонецЕсли;

// II) запустить и сохранить в параметр Сообщение = ""; PID = ПланировщикЗаданийКлиентСервер.ЗапуститьПриложениеЛокально("\общая папка или локальный путь\erp-tests\ExternAutomationUI\WinAutomationUI.exe -StartWebServer -Port 8080",Сообщение); Если PID>0 Тогда ПланировщикЗаданийСервер.УстановитьЗначениеПользовательскойПеременной(Неопределено,"ExternAutomationUI 8080",PID); КонецЕсли; ` image

б) Создайте задание "Запуск ExternalAutomationUI" и в него "Состав заданий" добавьте действие "Запустить ExternalAutomationUI" image

г) Создайте еще одно действие "Закрыть ExternalAutomationUI"

`// закрыть и удалить параметр Сообщение = ""; PID = ПланировщикЗаданийСервер.ПолучитьЗначениеПользовательскойПеременной(Неопределено,"ExternAutomationUI 8080");

Если НЕ PID=Неопределено Тогда ПланировщикЗаданийКлиентСервер.ЗавершитьПроцессЛокально(PID,Сообщение); ПланировщикЗаданийСервер.УдалитьЗначениеПользовательскойПеременной(Неопределено,"ExternAutomationUI 8080"); КонецЕсли;` image д) Создайте задание "Закрыть ExternalAutomationUI" и используете в составе данные шага г)

е) Теперь в задании проверки укажите с номером "0" задание "ЗАпуск ExternalAutomationUI", а самым последним шагом "Закрытие ExternalAutomationUI" image

ivanov660 commented 5 years ago

@SolovevaIV предлагаю закрыть обсуждение. Для обсуждения других вопросов создаем отдельные задачи.