Java AWT Robot – как читать текст/метку элемента?

Мне нужно выбрать соответствующую опцию во всплывающем окне. К сожалению, это не всплывающее окно, отображаемое на веб-странице, поэтому я не могу использовать платформу Selenium для этой цели.

Как я проверил, можно перейти к другому варианту, нажимая клавиши со стрелками. Таким образом, keyPress и keyRelease​ из Java AWT Robot должен отлично работать для меня, чтобы выбрать опцию и подтвердить выбор, нажав клавишу Enter.

К сожалению, я не вижу способа прочитать текущий выбранный текст элемента. Без этого я не могу найти подходящий вариант. Можно ли прочитать этикетку элемента с помощью робота Java AWT?


person matandked    schedule 28.09.2020    source источник


Ответы (1)


Если целевое приложение является другим java-приложением, вы сможете получить ссылку на иерархию компонентов и перемещаться по ней, пока не найдете текстовое поле и соответствующую метку.

Предполагая, что это не java-приложение, я не верю, что это возможно сделать - по крайней мере, напрямую. Robot просто обеспечивает ввод с помощью мыши/клавиатуры, но вы можете использовать его в сочетании с другими классами в наборе инструментов, чтобы хотя бы частично решить вашу проблему.

Используйте методы Robot keyPress и keyRelease для ввода CTRL-A. Затем CTRL-C.

Как только текст окажется в буфере обмена, вы можете прочитать его с помощью Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor)

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

В этом вопросе говорится об использовании java.awt.Robot для изменения текста в другой программе (MS excel), но он может дать вам некоторые дополнительные идеи для решения проблемы:

Как я могу выбрать текст в другом приложении с помощью java.awt.robot (пример: shift+home)

person Jason Braucht    schedule 28.09.2020