Functional Tester теряет объекты
#1
Отправлено 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 и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.
Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.
#2
Отправлено 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 и не видит то, что внутри. Вопрос, как он их в таком случае находит при записи скрипта, остается открытым.
Может кто-то сталкивался с подобной проблемой?
Возможности использовать другой инструмент для тестирования не предвидится.
Каждый объект имеет список уникальных свойств, так называемый первичный ключ - по которому он опделеяется.
Посмотрите в дереве объектов какой он.
А потом посмотрите свойства объектов на экране.
Если этому списку удовлетворяют много объектов, то он может и не будет находить.
Тут надо смотреть конкретно
#3
Отправлено 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?
Мне кажется, вы просто неверно "маппите элементы".
#4
Отправлено 22 октября 2010 - 07:05
Они добавляются как дочерние. Я могу назначить им уровни самостоятельно?
Я обратила внимание, что при добавлении этих элементов у них свойство .classIndex устанавливается null. Не видит RFT все объекты с этим свойством. Что это за параметр? я правильно понимаю, что как раз он и определяет локальную иерархию объектов в узле дерева карты?
Методы у них появляются. Но при запуске скрипта RFT эти объекты найти не может.
#5
Отправлено 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.
#6
Отправлено 22 октября 2010 - 12:57
Покопавшись в Object Browser вот что заметила - он видит объекты двумя способами:
1. Через .Qwidget (основное окно и все его дети). В этом случае он весьма бедно описывает приложение, клики только по координатам и прочее. Но моментально находит их через Highlight и при запуске скрипта.
2. Через .Application(основное окно). В этом случае прекрасно описываются пункты выпадающего меню, комбобоксы и прочее. Каждому контролу соответствует нормальное имя класса: .Menubar, .Menuitem, .Combobox, etc. Но в карте объектов у основного окна .Application видимо весьма плохое распознавание. Найти он его не может (и всех его детей соответственно). Если сделать объект динамическим, то находит в течение примерно 5 минут, что совершенно не годится для работы.
Не могу никак понять, откуда эта двойственность в описании приложения :(
#7
Отправлено 22 ноября 2010 - 17:52
Это не помогает, пишет No plausible candidate found
Покопавшись в Object Browser вот что заметила - он видит объекты двумя способами:
1. Через .Qwidget (основное окно и все его дети). В этом случае он весьма бедно описывает приложение, клики только по координатам и прочее. Но моментально находит их через Highlight и при запуске скрипта.
2. Через .Application(основное окно). В этом случае прекрасно описываются пункты выпадающего меню, комбобоксы и прочее. Каждому контролу соответствует нормальное имя класса: .Menubar, .Menuitem, .Combobox, etc. Но в карте объектов у основного окна .Application видимо весьма плохое распознавание. Найти он его не может (и всех его детей соответственно). Если сделать объект динамическим, то находит в течение примерно 5 минут, что совершенно не годится для работы.
Не могу никак понять, откуда эта двойственность в описании приложения :(
Советую вам скомпилить приложение QT в debug-mode. Кстати можете показать как видит тестер таблицу в дереве. Оч интересно.
#8
Отправлено 17 января 2011 - 15:50
#9
Отправлено 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.
Скрипт заработал )))
#10
Отправлено 12 мая 2012 - 11:00
Удалось покупкой TestComplete 8 )))Удалось решить данную проблему?
У меня есть свое решение, только я использую RFT 7.1.
При записи скрипта в карту объектов добавлялись два одинаковых объекта, только на разные уровни 1. как Parent 2. child.
Я сделал следующие для второго объекта удалил веса process и text.
Скрипт заработал )))
От RFT тогда быстро отказались. Возможно, что Ваше решение тогда бы меня выручило.
#11
Отправлено 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" и т.д. А если количество радиобаттонов изменится? Самописный сёчер объектов находит список радио и обращается к нужному по индексу - меньше переменных больше понимания, большая универсальность.
#12
Отправлено 12 июля 2013 - 05:20
Удалось покупкой TestComplete 8 )))
Удалось решить данную проблему?
У меня есть свое решение, только я использую RFT 7.1.
При записи скрипта в карту объектов добавлялись два одинаковых объекта, только на разные уровни 1. как Parent 2. child.
Я сделал следующие для второго объекта удалил веса process и text.
Скрипт заработал )))
От RFT тогда быстро отказались. Возможно, что Ваше решение тогда бы меня выручило.
Рекомендую изучить Selenium.
Это мощная бесплатная библиотека по тестированию веб-приложений.
И работодатель будет Вам благодарен за оптимизацию расходов компании.
Хотя, если у Вас не веб-приложение, возможно, Ваш вариант самый правильный.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных