v
>v"Please enter a number (1-16) : "0<
,: >$*99g1-:99p#v_.25*,@
^_&:1-99p>:1-:!|10 <
^ <
тайный язык Chris Pressey Eye Technologies CAT .
Я экспериментирую с кодом для инструмента для автоматизации графических интерфейсов на основе PowerBuilder. Из того, что я вижу, лучше всего было бы использовать собственный интерфейс PowerBuilder (PBNI) и вызывать код PowerScript из своего NVO.
Если хотите, не стесняйтесь отправить мне электронное письмо (см. Мой профиль для адрес электронной почты), мне было бы интересно обменяться идеями о том, как это сделать.
Я какое-то время не использовал PowerBuilder, но полагаю, что проблема, которую вы пытаетесь решить, аналогична той, которую я пытаюсь решить для людей, создающих проекты с системами SCADA, такими как Wonderware Intouch.
Проблема с таким приложением состоит в том, что нет API для получения или установки значения элемента управления. Так что подход pywinauto не может работать.
Я сделал небольшой инструмент для имитации пользовательских событий и получения результатов из снимка экрана. Я использую PIL и pytesser ORM для анализа снимков экрана. Это не самый простой способ, но он работает нормально.
Инструмент является бесплатным и имеет открытый исходный код, и его можно загрузить с моего веб-сайта (извините по-французски). Вам просто нужна учетная запись, но она также бесплатна. Просто спросите.
Если вы умеете читать по-французски, вот одна статья о тестировании приложений на основе Intouch
Извините за саморекламу, но я столкнулся с аналогичной проблемой без решения, поэтому я написал свою собственную. В любом случае, это бесплатно и с открытым исходным кодом ...
Если вы тестируете DataWindows (класс pbdwxxx, например, pbdw110), вам нужно будет использовать комбинацию щелчка по определенным координатам и отправки клавиш Tab, чтобы перейти к нужному элементу управления. Конечно, вы также можете отправлять клавиши со стрелками вверх и вниз для перемещения между строками. Проще всего начать с обычного элемента управления, такого как SLE, и перейти к DataWindow. Проблема в том, что DataWindow - это, по сути, просто изображение. Для данного поля нет элемента управления, пока вы не переместите туда фокус, щелкнув или нажав табуляцию. Я также обнаружил, что интерфейс iAccessible в DataWindow немного странный. Если вы спросите у DataWindow объект с фокусом, вы не получите правильного ответа. Если вы перечислите всех детей, вы сможете найти того, у кого есть фокус. Если вы можете изменить источник, я также советую вам установить AccessibleName для своих элементов управления DataWindow, иначе вы, вероятно, не сможете идентифицировать элементы управления, кроме как по положению (под элементами управления DataWindow я имею в виду те, которые находятся внутри DataWindow, а не непосредственно DataWindow) . Если это приложение MDI, вам также может быть полезно найти окно MicroHelp (класс fnhelpxxx, например, fnhelp110, найти из главного окна приложения), чтобы помочь определить текущий контекст.
Отредактировано для добавления: Сикули выглядит очень многообещающим для тестирования PowerBuilder. Он работает путем распознавания объектов на экране по сохраненному фрагменту скриншота. То есть вы делаете снимок экрана той части экрана, которую хотите найти.
В службе поддержки AutomatedQa я видел рецепт, рекомендующий использование msaa и установку некоторых свойств для элементов управления. Не знаю, работает ли.