Что нового

[Автоматизация] Циклические функции с вложением

cobra2029

Новичок
Сообщения
54
Репутация
0
Версия AutoIt: 3.

Описание: Ув. знатоки. При написании скрипта для автоматизации действий в некоторой программе (не игра!!!) столкнулся с необходимостью использования функций и выполнения действий через if... then.

Коротко о самой задаче:

Есть программа для синхронизации базы данных клиента и базы данных сервера (использовать обычные инструменты для работы с базой нельзя).
Несколько раз в месяц, необходимо проводить синхронизацию.
Синхронизация представляет собой ряд действий, которые логически делятся на 3 этапа:
1. Этап работа с удалённой базой клиента:
- ввести информацию о клиенте
- выбрать диапазон по времени (за какой период сливать данные)
- выбрать путь сохранения
- сохранить
если сохранение удачно (появляется диалоговое окно), то перейти к этапу 2
если за указанный диапазон данные отсутствуют (появится диалоговое окно), то перейти к работе с другим клиентом (этап 3).
если произошел обрыв связи (появится диалоговое окно), то необходимо повторить процесс еще раз (этап 1).
2. Этап работа с сервером
- ввести информацию о сервере
- выбрать файл который был получен в ходе выполнения этапа 1 (путь сохранения)
- загрузить
если загрузка удачно (диалоговое окно не появляется! в поле (условно назову его) memo появится запись "Загрузка завершена, ....", то перейти к этапу 3
если за указанный файл отсутствуют (появится диалоговое окно), то повторить процесс (этап 2).
если произошел обрыв связи (появится диалоговое окно), то необходимо повторить процесс еще раз (этап 2).
Примечания:

я не прошу сделать за меня весь скрипт мне просто нужна помощь по некоторым вопросам.

Скрипт вообще то я уже сделал, но я не смог реализовать его по той схеме которую привёл в задание: не получается сделать проверку на появление окон и переход в соответствующую часть кода.

Вот сам код, который получилось написать используя хелп по autoit (только по одному из клиентов остальное все однотипное):
Код:
					;имя  клиента
	if WinActivate("Синхронизатор","автономный клиент") == 0 then; попробуем перейти в уже открытый  ST
			;если не удалось найти то запустим новый
	Run ('Sinh.exe')
	EndIf
			;ждём пока не откроется Sinh.exe
	WinWaitActive("Синхронизатор","автономный клиент")
	Sleep (3000)
	WinWaitActive("Синхронизатор","автономный клиент")
	ControlClick("Синхронизатор","автономный клиент","Edit1")
	WinWaitActive("Синхронизатор","автономный клиент")
	Send ("Server=110.195.68.8;Port=785692;User Id=guest;Database=microstikendtiam;")
	Sleep (1000)
	ControlClick("Синхронизатор","автономный клиент","WindowsForms10.SysDateTimePick32.app.0.378734a2")
	;Ввод даты
	Sleep (500)
	Send ("{up}")
	Sleep (500)
	Send ("{LEFT}")
	Sleep (500)
	Send ("5")
	Sleep (500)
	Send ("{TAB}")
	Sleep (500)
	Send  ("14")
	Sleep (500)
	;Send ("{RIGHT}")
	;Sleep (500)
	ControlClick("Синхронизатор","автономный клиент","WindowsForms10.EDIT.app.0.378734a1")
	Sleep (500)
	; очищаем строчку
	Send ("{Backspace 100}")
	Sleep (500)
	Send ("{Delete 100}")
	Sleep (500)
	Send ("d:\baza\автономная_БД_клиентов\Syst\termo1.txt")
	Sleep (500)
	WinWait("Синхронизатор","автономный клиент")
	Sleep (500)
	ControlClick("Синхронизатор","автономный клиент","WindowsForms10.BUTTON.app.0.378734a4")
	WinWait("Операція завершена","")
	Sleep (500)
	Send ("{TAB}")
	Sleep (500)
	Send ("{Enter}")
	Sleep (500)
;Здесь происходит переход 
;на работу с сервером
WinWaitActive("Синхронизатор","автономный клиент")
Sleep (500)
WinWait("Синхронизатор","автономный клиент")
ControlClick("Синхронизатор","автономный клиент","WindowsForms10.BUTTON.app.0.378734a2")
Sleep (500)
Send ("{TAB}")
Sleep (500)
Send ("{TAB}")
Sleep (500)
Send ("{RIGHT}")
Sleep (500)
ControlClick("Синхронизатор","автономный клиент","Edit1")
Send ("http://178.155.241.131:8082/pub")
Sleep (500)
ControlClick("Синхронизатор","автономный клиент","WindowsForms10.EDIT.app.0.378734a2")
Sleep (500)
Send ("{Backspace 100}")
Sleep (500)
Send ("{Delete 100}")
Sleep (500)
Send ("d:\baza\автономная_БД_клиентов\Syst\termo1.txt")
Sleep (500)
ControlClick("Синхронизатор","автономный клиент","WindowsForms10.BUTTON.app.0.378734a12")

MsgBox(0, "Автоматизатор", "Автоматизатор продолжит выполнять работу со следующим клиентом через 15 секунд",15)
; ждём 15  секунд и  повторяем операцию для  следующего клиента
код, который приведён выше работает, но хотелось бы реализовать его в виде который был описан в задаче.

Заранее спасибо за ответы и помощь.
 
Верх