Mercury Quick Test Pro и виртуальные машины: работает с одной клиентской машины, но не с другой - PullRequest
6 голосов
/ 18 сентября 2008

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

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

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

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

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

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

Спасибо.

Ответы [ 5 ]

5 голосов
/ 15 октября 2008

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

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

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

Вуаля.

1 голос
/ 25 сентября 2008

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

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

1 голос
/ 19 сентября 2008

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

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

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

Пример 1: Диалог просмотра файлов
text = "Выбрать файл"
nativeclass = # 32770 (очевидно, какой-нибудь Windows VooDoo для диалога открытия файла?)

Пример 2: текстовое поле имени файла в диалоговом окне "Обзор":
nativeclass = "Редактировать"
прикрепленный текст «Файл и имя:» (больше Windows VooDoo? У меня не получится без «&»)

Пример 3: Кнопка открытия в диалоговом окне:
text = "& Open"
object class = "Button"

Удачи!

0 голосов
/ 24 сентября 2008

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

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

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

0 голосов
/ 24 сентября 2008

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

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


Изменить: @ МатьеФ сказал:

Фактически, мы используем плагин Infragistics для QTP, и у нас все еще есть проблема

Можете ли вы привести пример линии, которая не работает?

...