взаимодействие с исполняемым JAR для управления графическим интерфейсом Swing - PullRequest
0 голосов
/ 19 декабря 2010

У меня есть исполняемый файл JAR, который вызывает графический интерфейс Swing и, после некоторых выборов в полях выбора и т. Д. И нажатия кнопки ОК, запускает процесс.Я хотел бы автоматизировать процесс принятия решений и запуска процесса.

У меня нет доступа к исходному коду или какой-либо документации, поэтому мне кажется, что единственный способ сделать это - этокак-то подключиться к GUI и симулировать пользователя.В худшем случае используется java.awt.Robot для фактического манипулирования курсором для внесения желаемых изменений, но это очень грязно и подвержено ошибкам.Есть ли лучшие способы взаимодействия с графическим интерфейсом?

1 Ответ

2 голосов
/ 19 декабря 2010

В этом ответе я предполагаю, что вы можете загрузить jar в свой собственный main () и вызвать их класс записи GUI.

Swing (например, AWT) позволяет довольно легко анализировать GUI. GUI, вероятно, дерево панелей и детей. Как только вы пройдете по дереву и найдете виджет, который хотите вызвать (это сложная часть), вы можете просто нажимать кнопки и т. Д. Программно.

[уходит по касательной ...] Я обычно использую эту технику для модульного тестирования моих собственных графических интерфейсов. Я обязательно вызываю "setName ()" для компонентов, которые планирую проанализировать, и сначала рекурсивно проверяю глубину через мой интерфейс, пока "getName ()" не выдаст искомую строку. Это позволяет мне проводить рефакторинг графического интерфейса без особой необходимости менять тестовые леса. Одна и та же концепция часто может применяться к работе со сторонними графическими интерфейсами, но, увы, они редко используют setName (), поэтому идентификация компонентов может быть более сложной - вам нужно посмотреть на текст кнопки и т. Д.

...