Mercury Quick Test Pro и виртуальные машины: работает с одной клиентской машины, но не с другой
У меня установлена виртуальная машина (VMware) с Mercury Quick Test Professional 9.2. У меня есть скрипт для тестирования приложения, написанный в VB.NET использование библиотеки Infragistics.
Если я получаю доступ к этой виртуальной машине с помощью моего ноутбука (с помощью удаленного рабочего стола), все работает нормально, скрипт завершается без проблем. Мой ноутбук работает XP, с классической темой Windows.
Если я получаю доступ к этой виртуальной машине с помощью другой машины (с помощью удаленного рабочего стола), сценарий начинается нормально, но останавливается на полпути, без сообщения об ошибке от QTP, ничего. Эта машина работает XP, с Windows Classic theme.
одна разница между двумя настройками-это размер экрана, ноутбук 1920x1280, другая машина 1280x1024.
шаг, на котором скрипт останавливается, включает в себя проверку флажка в UltraWinGrid. Сам флажок отображается, находится на экране в обоих случаях.
У кого-нибудь была эта проблема раньше или есть какие-либо знаете, почему поведение отличается между двумя машинами?
спасибо.
5 ответов
OK. Я нашел проблему. На самом деле, сценарий терпел неудачу молча, потому что это то, что человек, написавший сценарий, сказал ему сделать. Он не мог проверить что-то, что было вне экрана, поэтому сценарий не удался.
проблема заключалась в определении QTP "off screen". У меня есть два экрана, прикрепленные к моему ноутбуку, экран для самого ноутбука (1920x1200) и другой экран (1280x1024). Я подключаюсь к VM для QTP с помощью удаленного рабочего стола, и он использует настройки экрана для ноутбука. Это означает, что когда я запускаю свой сценарий QTP и перемещаю его на другой экран, он не подходит, поэтому экран больше не максимизируется, а объект частично выключен, поэтому его нельзя найти.
исправление простое: на удаленном рабочем столе используйте вкладку "дисплей" и установите размер экрана в размер 1280x1024, и QTP больше не имеет проблем.
вуаля.
Если вы не используете экспертный режим и / или разрешаете QTP выполнять большую часть работы по созданию объектов репозитория, то да, он ссылается на все по пикселям.
Я создаю все свои объекты репозитория вручную, просматривая источник (в случае автоматизированного тестирования веб-приложений) и используя Object Spy для помощи, где это необходимо. Я подчеркиваю, что не имею никакой информации о местоположении как части моего определения объекта по той самой причине, по которой вы работаете.
для частей моего веб-приложения, которые взаимодействовали с Windows (открытие файла для загрузки и т. д.) шпион объекта был необходим для проб и ошибок, необходимых для создания уникального идентификатора для создания объекта репозитория. Но это можно сделать.
Ex1: Диалоговое Окно Просмотра Файлов
текст = "выбрать файл"
nativeclass = #32770 (по-видимому, некоторые окна вуду для диалога открытия файла?)
Ex2: текстовое поле Filename в Browse диалог:
nativeclass = "Edit"
прикрепленный текст " File &name: "(больше Windows VooDoo? Это не будет работать для меня без"&")
Ex3: кнопка Открыть в диалоговом окне:
текст = "и"
объекта "кнопка" класс=""
Удачи!
пункт разъяснения: вы упомянули, что QTP останавливается без сообщения об ошибке. Означает ли это также, что в файле журнала результатов теста также нет сообщения об ошибке? Если в журнале есть какая-либо информация, это может быть полезно при диагностике проблемы. Не могли бы вы поделиться строками кода в точке, где сценарий терпит неудачу?
кроме того, remote desktop изменит размер рабочего стола на удаленном компьютере. Хотя сценарии QTP по своей сути не основаны на координатах, отдельные операторы могут быть координатно-ориентированный относительно объекта. Резолюция могла бы стать проблемой в этом отношении. Например, представьте, что у вас есть строка типа Button.Нажмите кнопку (5, 150), записанную на компьютере с более высоким разрешением. Но если вы попытаетесь воспроизвести его на машине с более низким разрешением, а 150 находится за пределами объекта с более низким разрешением, это может вызвать проблему.
QTP делает не используйте экранные координаты, кроме как в крайнем случае, если объекты идентифицированы как объекты высокого уровня (SwfTable
в этом случае) вы должны быть в порядке, Если, однако, QTP не распознает объект, он возвращается к WinObject
и координаты экрана.
Если вы используете Infragistics, то вы должны знать, что они расширяют поддержку QTP с их TestAdvantage продукт, который, вероятно, решить вашу вопрос.
Edit: @MatthieuF сказал:
на самом деле, мы используем плагин Infragistics для QTP, и у нас все еще есть проблема
можете ли вы дать мне пример строки, что не удастся?
несколько вещей:
вы должны иметь возможность легко отлаживать на виртуальной машине - просто подождите, пока он остановится, зайдите в репозиторий объектов и посмотрите, может ли он идентифицировать объект. Если нет, то используйте object spy, чтобы выяснить, какие свойства отличаются между ОС. Если есть разница, вы всегда можете установить это свойство в регулярное выражение и проверить его для обеих возможностей.
Предполагая, что это не проблема, мы столкнулись с проблемами с использованием удаленного рабочего стола с QTP если удаленное окно закрыто или свернуто. Для нас это была проблема, когда буфер обмена не может быть изменен, когда окно RDP не видно, но могут быть и другие сюрпризы при использовании QTP таким образом.