Перейти к содержимому

Фотография

Functional Tester теряет объекты


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 wildcattys

wildcattys

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Торбан О.Р.

Отправлено 21 октября 2010 - 14:03

Добрый день!
Тестирую приложение,написанное на C++ c использованием библиотеки Qt
Использую Rational Functional Tester версия 8.1.1.3

Проблема заключается в следующем: есть карта объектов, в ней объект docProjectPanelwindow (класс QWidget)
Далее, вручную добавляю в него объекты при помощи Insert Object через захват элемента или просто записываю скрипт через recoder
Все объекты, которые после этого появляются в docProjectPanelwindow как его дети (label, staticText, Table и проч.) успешно добавляются карту объектов, но при воспроизведении скрипта или использовании функции Highlight RFT их найти не может.
Впечатление, что он видит только объекты класса QWidget и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.

Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 21 октября 2010 - 14:16

Добрый день!
Тестирую приложение,написанное на C++ c использованием библиотеки Qt
Использую Rational Functional Tester версия 8.1.1.3

Проблема заключается в следующем: есть карта объектов, в ней объект docProjectPanelwindow (класс QWidget)
Далее, вручную добавляю в него объекты при помощи Insert Object через захват элемента или просто записываю скрипт через recoder
Все объекты, которые после этого появляются в docProjectPanelwindow как его дети (label, staticText, Table и проч.) успешно добавляются карту объектов, но при воспроизведении скрипта или использовании функции Highlight RFT их найти не может.
Впечатление, что он видит только объекты класса QWidget и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.

Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.

Такое чувство, что вы что то не так делаете.
Каждый объект имеет список уникальных свойств, так называемый первичный ключ - по которому он опделеяется.
Посмотрите в дереве объектов какой он.
А потом посмотрите свойства объектов на экране.
Если этому списку удовлетворяют много объектов, то он может и не будет находить.
Тут надо смотреть конкретно
  • 0

#3 Pryanik

Pryanik

    Постоянный участник

  • Members
  • PipPipPip
  • 214 сообщений
  • Город:МОСКВА

Отправлено 22 октября 2010 - 06:19

Добрый день!
Тестирую приложение,написанное на C++ c использованием библиотеки Qt
Использую Rational Functional Tester версия 8.1.1.3

Проблема заключается в следующем: есть карта объектов, в ней объект docProjectPanelwindow (класс QWidget)
Далее, вручную добавляю в него объекты при помощи Insert Object через захват элемента или просто записываю скрипт через recoder
Все объекты, которые после этого появляются в docProjectPanelwindow как его дети (label, staticText, Table и проч.) успешно добавляются карту объектов, но при воспроизведении скрипта или использовании функции Highlight RFT их найти не может.
Впечатление, что он видит только объекты класса QWidget и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.

Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.


А зачем добавлять другие объекты как дочерние docProjectPanelwindow?
Попробуйте "маппировать" их одним уровнем. У этих "других" объектов появляются доступные методы при внесении в MAP?

Мне кажется, вы просто неверно "маппите элементы".
  • 0

#4 wildcattys

wildcattys

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Торбан О.Р.

Отправлено 22 октября 2010 - 07:05

Возможно. Я работаю с этим инструментом совсем недавно.
Они добавляются как дочерние. Я могу назначить им уровни самостоятельно?
Я обратила внимание, что при добавлении этих элементов у них свойство .classIndex устанавливается null. Не видит RFT все объекты с этим свойством. Что это за параметр? я правильно понимаю, что как раз он и определяет локальную иерархию объектов в узле дерева карты?

Методы у них появляются. Но при запуске скрипта RFT эти объекты найти не может.
  • 0

#5 Pryanik

Pryanik

    Постоянный участник

  • Members
  • PipPipPip
  • 214 сообщений
  • Город:МОСКВА

Отправлено 22 октября 2010 - 09:13

Возможно. Я работаю с этим инструментом совсем недавно.
Они добавляются как дочерние. Я могу назначить им уровни самостоятельно?
Я обратила внимание, что при добавлении этих элементов у них свойство .classIndex устанавливается null. Не видит RFT все объекты с этим свойством. Что это за параметр? я правильно понимаю, что как раз он и определяет локальную иерархию объектов в узле дерева карты?

Методы у них появляются. Но при запуске скрипта RFT эти объекты найти не может.

Возможная причина и ее решение:

ObjectNotFound exception occurs during script playback and the exception message indicates that the object state is incorrect.
For example: Looking for [button] with state [ENABLED|VISIBLE|READY], possible failing candidate[{.mappableClassIndex=0, text=*!ENT!*, .classIndex=0}] with incorrect state [DISABLED]

During playback, Functional Tester expects one of the following state for a test object:
•ENABLED
•VISIBLE
•READY (for browser)

If the state of the test object does not match the expected state, the ObjectNotFound exception occurs. To override the exception, set the anchor of the object to null or ANY.
For example: Replace button().click(); with button(null, DISABLED).click();

Взято из help.
  • 0

#6 wildcattys

wildcattys

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Торбан О.Р.

Отправлено 22 октября 2010 - 12:57

Это не помогает, пишет No plausible candidate found

Покопавшись в Object Browser вот что заметила - он видит объекты двумя способами:
1. Через .Qwidget (основное окно и все его дети). В этом случае он весьма бедно описывает приложение, клики только по координатам и прочее. Но моментально находит их через Highlight и при запуске скрипта.
2. Через .Application(основное окно). В этом случае прекрасно описываются пункты выпадающего меню, комбобоксы и прочее. Каждому контролу соответствует нормальное имя класса: .Menubar, .Menuitem, .Combobox, etc. Но в карте объектов у основного окна .Application видимо весьма плохое распознавание. Найти он его не может (и всех его детей соответственно). Если сделать объект динамическим, то находит в течение примерно 5 минут, что совершенно не годится для работы.

Не могу никак понять, откуда эта двойственность в описании приложения :(
  • 0

#7 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 22 ноября 2010 - 17:52

Это не помогает, пишет No plausible candidate found

Покопавшись в Object Browser вот что заметила - он видит объекты двумя способами:
1. Через .Qwidget (основное окно и все его дети). В этом случае он весьма бедно описывает приложение, клики только по координатам и прочее. Но моментально находит их через Highlight и при запуске скрипта.
2. Через .Application(основное окно). В этом случае прекрасно описываются пункты выпадающего меню, комбобоксы и прочее. Каждому контролу соответствует нормальное имя класса: .Menubar, .Menuitem, .Combobox, etc. Но в карте объектов у основного окна .Application видимо весьма плохое распознавание. Найти он его не может (и всех его детей соответственно). Если сделать объект динамическим, то находит в течение примерно 5 минут, что совершенно не годится для работы.

Не могу никак понять, откуда эта двойственность в описании приложения :(


Советую вам скомпилить приложение QT в debug-mode. Кстати можете показать как видит тестер таблицу в дереве. Оч интересно.
  • 0

#8 wildcattys

wildcattys

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Торбан О.Р.

Отправлено 17 января 2011 - 15:50

Проблему решить так и не получилось. После долгих мучений перешли на TestComplete.
  • 0

#9 Maestro9898

Maestro9898

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Саварин Иван Сергеевич


Отправлено 12 мая 2012 - 05:40

Добрый день!
Тестирую приложение,написанное на C++ c использованием библиотеки Qt
Использую Rational Functional Tester версия 8.1.1.3

Проблема заключается в следующем: есть карта объектов, в ней объект docProjectPanelwindow (класс QWidget)
Далее, вручную добавляю в него объекты при помощи Insert Object через захват элемента или просто записываю скрипт через recoder
Все объекты, которые после этого появляются в docProjectPanelwindow как его дети (label, staticText, Table и проч.) успешно добавляются карту объектов, но при воспроизведении скрипта или использовании функции Highlight RFT их найти не может.
Впечатление, что он видит только объекты класса QWidget и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.

Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.


Удалось решить данную проблему?
У меня есть свое решение, только я использую RFT 7.1.
При записи скрипта в карту объектов добавлялись два одинаковых объекта, только на разные уровни 1. как Parent 2. child.
Я сделал следующие для второго объекта удалил веса process и text.
Скрипт заработал )))
  • 0

#10 wildcattys

wildcattys

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Торбан О.Р.

Отправлено 12 мая 2012 - 11:00

Удалось решить данную проблему?
У меня есть свое решение, только я использую RFT 7.1.
При записи скрипта в карту объектов добавлялись два одинаковых объекта, только на разные уровни 1. как Parent 2. child.
Я сделал следующие для второго объекта удалил веса process и text.
Скрипт заработал )))

Удалось покупкой TestComplete 8 )))
От RFT тогда быстро отказались. Возможно, что Ваше решение тогда бы меня выручило.
  • 0

#11 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 12 июля 2013 - 05:16

Добрый день!
Тестирую приложение,написанное на C++ c использованием библиотеки Qt
Использую Rational Functional Tester версия 8.1.1.3

Проблема заключается в следующем: есть карта объектов, в ней объект docProjectPanelwindow (класс QWidget)
Далее, вручную добавляю в него объекты при помощи Insert Object через захват элемента или просто записываю скрипт через recoder
Все объекты, которые после этого появляются в docProjectPanelwindow как его дети (label, staticText, Table и проч.) успешно добавляются карту объектов, но при воспроизведении скрипта или использовании функции Highlight RFT их найти не может.
Впечатление, что он видит только объекты класса QWidget и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.

Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.


Поэтому я в своё время отказался от маппирования объектов а RFT - лучше сам найду по иерархии, чем мучиться от неизвестности: найдёт сейчас или не найдёт?
После реализации собственных методов для поиска и получения объектов с нужными параметрами о данной проблеме забыл.
Чего и Вам советую.

P.S. минус маппинга, имхо, ещё и в том, что если кнопочка переедет или изменит какое-нибудь одно своё свойство, тест свалится в иксепшн "Объект не найден".
Ещё пример минуса использования маппинга объектов: есть несколько радиобаттонов, объединённых в один список. RFT должен все их запихать в мапу, создав объекты с названиями "link_radio_button_1" и т.д. А если количество радиобаттонов изменится? Самописный сёчер объектов находит список радио и обращается к нужному по индексу - меньше переменных больше понимания, большая универсальность.
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#12 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 12 июля 2013 - 05:20


Удалось решить данную проблему?
У меня есть свое решение, только я использую RFT 7.1.
При записи скрипта в карту объектов добавлялись два одинаковых объекта, только на разные уровни 1. как Parent 2. child.
Я сделал следующие для второго объекта удалил веса process и text.
Скрипт заработал )))

Удалось покупкой TestComplete 8 )))
От RFT тогда быстро отказались. Возможно, что Ваше решение тогда бы меня выручило.


Рекомендую изучить Selenium.
Это мощная бесплатная библиотека по тестированию веб-приложений.
И работодатель будет Вам благодарен за оптимизацию расходов компании.

Хотя, если у Вас не веб-приложение, возможно, Ваш вариант самый правильный.
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных