2008-09-18 1 views
6

У меня есть виртуальная машина (VMware) с установленным Mercury Quick Test Professional 9.2. У меня есть скрипт для тестирования приложения, написанного на VB.NET с использованием библиотеки Infragistics.Mercury Quick Test Pro и виртуальные машины: работает с одной клиентской машины, но не с другой

Если я пользуюсь этой виртуальной машиной, используя мой ноутбук (используя Remote Desktop), все работает нормально, скрипт завершается без проблем. Мой ноутбук работает XP, с Windows Classic темы.

Если я получаю доступ к этой виртуальной машине с использованием другой машины (с использованием удаленного рабочего стола), сценарий запускается нормально, но останавливается на полпути, без сообщения об ошибке от QTP, ничего. Эта машина работает с XP, с темой Windows Classic.

Одно из отличий между двумя настройками - размер экрана, ноутбук - 1920x1280, другая машина 1280x1024.

Шаг остановки скрипта включает проверку флажка в UltraWinGrid. В обоих случаях отображается флажок, который отображается на экране.

У кого-нибудь была эта проблема раньше или есть идеи, почему поведение отличается от двух машин?

Спасибо.

ответ

5

OK. Я нашел проблему. Фактически, сценарий терпел неудачу, потому что это то, что сказал человек, написавший сценарий. Он не смог проверить что-то, что было вне экрана, поэтому скрипт не удался.

Проблема заключалась в определении QTP «off screen». У меня два экрана, прикрепленные к моему ноутбуку, экран для самого ноутбука (1920x1200) и другой экран (1280x1024). Я подключаюсь к виртуальной машине для QTP с помощью удаленного рабочего стола, и он использует настройки экрана для ноутбука. Это означает, что когда я запускаю свой QTP-скрипт и перемещаю его на другой экран, он не подходит, поэтому экран больше не расширяется, и объект частично отключен от экрана, поэтому его нельзя найти.

Исправление простое: на удаленном рабочем столе используйте вкладку «Экран» и установите размер экрана на размер до 1280x1024, а QTP больше не будет проблем.

Voilà.

+0

Я предполагаю, что видимо относительно) Я RDPing из Linux, поэтому я не столкнулся с этой конкретной проблемой, учитывая, что мое RDP-окно не может быть изменено после его запуска ... – tloach 2008-10-15 14:42:10

1

Если вы не используете экспертный режим и/или разрешаете QTP выполнять большую часть работы для создания объектов репозитория, то да, это ссылка на все по пикселям.

Я создаю все свои объекты хранилища вручную, просматривая исходный код (в случае автоматизированного тестирования веб-приложений) и используя Object Spy для помощи там, где это необходимо. Я хочу указать, что у меня нет какой-либо информации о местоположении как части определения моего объекта, по той причине, в которой вы работаете.

Для частей моего веб-приложения, которое взаимодействовало с Windows (открытие файла для загрузки и т. Д.), Object Spy был необходим для проб и ошибок, необходимых для создания уникального идентификатора для создания объекта репозитория. Но это может быть сделано.

Ex1: Файл Обзор Dialog
текст = "Выберите файл"
nativeclass = # 32770 (видимо некоторые окна VooDoo для открытия файла диалога?)

Ex2: Имя файла текстовое поле в диалоговом окне Обзор:
nativeclass = "Редактировать"
прилагается текст "Файл & имя:" (Перейти для Windows VooDoo Это woudn't работа для меня без "&")

Ex3: Кнопка открытия в диалоге:
текст = "& Open"
класса объекта = "Кнопка"

Good Luck!

0

QTP делает не использование экранные координаты, кроме как крайнем случае, если объекты идентифицируются объекты, как высокий уровень (SwfTable в данном случае), вы должны быть в порядке, если же QTP не распознает объект падает обратно до WinObject и координаты экрана.

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


Edit: @MatthieuF сказал:

В самом деле, мы используем плагин Infragistics для QTP, и мы до сих пор есть проблема

Можете ли вы дать мне пример строки, которая терпит неудачу?

0

Несколько вещей:

Вы должны быть в состоянии отладки на виртуальной машине легко - просто ждать его, чтобы остановить, перейти в репозиторий объектов, и посмотреть, если он может идентифицировать объект. Если нет, используйте шпион объекта, чтобы выяснить, какие свойства отличаются между ОС. Если есть разница, вы всегда можете установить это свойство в регулярное выражение и проверить его на обе возможности.

Предполагая, что это не проблема, мы столкнулись с проблемами с использованием удаленного рабочего стола с QTP, если удаленное окно закрыто или сведено к минимуму. Для нас это была проблема, когда буфер обмена не может быть изменен, когда окно RDP не видно, но при использовании QTP могут быть другие сюрпризы.

1

Точка разъяснения: Вы упомянули, что QTP останавливается без сообщения об ошибке. Означает ли это также, что в файле журнала результатов теста также нет сообщения об ошибке? Если в журнале есть какая-либо информация, это может быть полезно при диагностике проблемы. Не могли бы вы поделиться строк кода в точке, где сбой сценария?

Кроме того, удаленный рабочий стол изменит размер рабочего стола на удаленном компьютере. Хотя сценарии QTP не основаны на принципе координат, отдельные утверждения могут быть основаны на координатах относительно объекта. Резолюция может быть проблемой в этом отношении. Например, представьте, что у вас была линия типа Button.Click (5, 150), записанная на машине с более высоким разрешением. Но если вы попытаетесь воспроизвести его на машине с более низким разрешением, а 150 находится вне границ объекта с более низким разрешением, это может вызвать проблему.

Смежные вопросы