Как сделать приложение для тестирования PowerBuilder UI? - PullRequest
6 голосов
/ 16 ноября 2009

Я не знаком с PowerBuilder, но у меня есть задача создать приложение автоматического тестирования пользовательского интерфейса для PB. Мы решили сделать это на Python с помощью библиотек pywinauto и iaccesible. Проблема в том, что некоторые элементы пользовательского интерфейса, такие как вновь добавленная запись списков, не могут быть приняты из нее (даже inspect32 не может ее получить). Любые идеи, как добраться до этих элементов и сделать их тестируемыми?

Ответы [ 4 ]

2 голосов
/ 16 ноября 2009

Я экспериментирую с кодом для инструмента для автоматизации графических интерфейсов на основе PowerBuilder. Из того, что я вижу, лучше всего было бы использовать собственный интерфейс PowerBuilder (PBNI) и вызывать код PowerScript из своего NVO.

Если хотите, не стесняйтесь, присылайте мне электронные письма (см. Мой профиль для моего адреса электронной почты), я был бы заинтересован в обмене идеями о том, как это сделать.

1 голос
/ 24 февраля 2010

Я видел в поддержке AutomatedQa, что они рекомендуют использовать msaa и устанавливать некоторые свойства для элементов управления. Я не знаю, работает ли он.

1 голос
/ 16 ноября 2009

Если вы тестируете DataWindows (класс pbdwxxx, например, pbdw110), вам придется использовать комбинацию щелчка по определенным координатам и отправки клавиш Tab, чтобы получить нужный элемент управления. Конечно, вы также можете отправлять стрелки вверх и вниз для перемещения между рядами. Проще всего начать с обычного элемента управления, такого как SLE, и перейти в DataWindow. Проблема в том, что DataWindow - это просто изображение. Нет никакого контроля для данного поля, пока вы не переместите фокус там, нажав или вкладку. Я также обнаружил, что интерфейс iAccessible в DataWindow немного странный. Если вы спросите в DataWindow объект с фокусом, вы не получите правильный ответ. Если вы перечислите всех детей, вы сможете найти того, на кого фокусируется. Если вы можете изменить источник, я также советую вам установить AccessibleName для ваших элементов управления DataWindow, иначе вы, вероятно, не сможете идентифицировать элементы управления, кроме как по положению (под элементами управления DataWindow я имею в виду те, которые находятся внутри DataWindow, а не само DataWindow) , Если это приложение MDI, вам также может быть полезно найти окно MicroHelp (класс fnhelpxxx, например, fnhelp110, найти в главном окне приложения), чтобы определить текущий контекст.

Отредактировано, чтобы добавить: Sikuli выглядит очень многообещающе для тестирования PowerBuilder. Он работает, распознавая объекты на экране по сохраненному фрагменту скриншота. То есть вы делаете скриншот той части экрана, которую хотите найти.

1 голос
/ 16 ноября 2009

Я некоторое время не использовал PowerBuilder, но думаю, что проблема, которую вы пытаетесь решить, аналогична той, которую я пытаюсь решить для людей, создающих проекты с системами SCADA, такими как Wonderware Intouch.

Проблема с таким приложением состоит в том, что не существует API для получения или установки значения элемента управления. Таким образом, подход Pywinauto не может работать.

Я создал небольшой инструмент для имитации пользовательских событий и получения результатов из снимка экрана. Я использую PIL и Pytesser ORM для анализа снимков экрана. Это не самый простой способ, но он работает нормально.

Инструмент с открытым исходным кодом и бесплатен и может быть загружен с моего сайта (Извините по-французски). Вам просто нужна учетная запись, но она также бесплатна. Просто спросите.

Если вы умеете читать по-французски, вот одна статья о тестировании приложений на основе Intouch

Извините за саморекламу, но я столкнулся с подобной проблемой без решения, поэтому я написал свое собственное. Во всяком случае, это бесплатно и с открытым исходным кодом ...

...