Mercury Quick Test Pro и виртуальные машины:Работает с одного клиентского компьютера, но не с другого

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

Voilà.

Другие советы

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

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

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

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

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

Пример 3:Кнопка Открыть в диалоговом окне:
text = "иоткрыть"
класс объекта = "Кнопка"

Удачи вам!

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

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

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

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


Редактировать: @Маттиеф сказал:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top