Что нового

[Элементы GUI] Как выбрать для ввода нужное полу для ввода , по имени поля/окна ?

Abir

Новичок
Сообщения
2
Репутация
0
Есть GUI интерфейс некоего ПО.
В общем и целом задача состоит в автоматизации тестирования.

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

Вопрос в том, как заполнить Send-ом нужное поле, зная его название (с помощью AutoIt v3 Window Info ).

Заранее всем большое спасибо.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Код:
ControlSetText('заголовок окна', '', 'название поля', 'текст для вставки')
; или
ControlSend('заголовок окна', '', 'название поля', 'строка для отправки')
 
Автор
A

Abir

Новичок
Сообщения
2
Репутация
0
У моих формочек ID контролов постоянно меняются, т.е. они , видимо , жестко не заданы и генеряться заново для каждого нового запущенного приложения.

Значит ли это, что никаким другим образом, кроме координатного кликанья , нельзя будет обращаться к контролам?

Как - нибудь по названиям кнопок (надписям на них и тд ? )
 

Dm666

Осваивающий
Сообщения
221
Репутация
48
Покажите скрин этого ПО, будет понятнее
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Вот я написал функцию, которая возвращает Handle контрола по его названию (тексту). Если не найдет, то возвращает 0. Вроде бы работает нормально.
Пример:
Код:
$Ctrl = _ControlGetByValue('[CLASS:Notepad]', 'Hello')
MsgBox(0, 'Control Class', $Ctrl)

Func _ControlGetByValue($hWnd, $hText)
	$Classes = WinGetClassList($hWnd)
	$ClassSplit = StringSplit($Classes, @CRLF)
	For $i = 1 To $ClassSplit[0]
		If ControlGetText($hWnd, '', '[CLASS:' & $ClassSplit[$i] & ']') = $hText Then Return ControlGetHandle($hWnd, '', '[CLASS:' & $ClassSplit[$i] & ']')
		ExitLoop
	Next
EndFunc
 

f_ckerfox

Новичок
Сообщения
3
Репутация
0
ап издалека)
Примерно такая же ситуация: есть софтина, в ктр есть поля данных, представленные в табличном (относительно)) виде.
Проблема: WindowInfo не видит контролов, выделяет гуй частями и всё.
Вопрос: возможно ли каким-н ещё образом узнать айдишники контролов, дабы кликать по ним не с помощью координат?
 

f_ckerfox

Новичок
Сообщения
3
Репутация
0
Спасибо. К сожалению, табличные контролы так и не видит =(
 
Верх