Версия AutoIt: 3.
Описание: Ув. знатоки. При написании скрипта для автоматизации действий в некоторой программе (не игра!!!) столкнулся с необходимостью использования функций и выполнения действий через if... then.
Коротко о самой задаче:
Есть программа для синхронизации базы данных клиента и базы данных сервера (использовать обычные инструменты для работы с базой нельзя).
Несколько раз в месяц, необходимо проводить синхронизацию.
Синхронизация представляет собой ряд действий, которые логически делятся на 3 этапа:
1. Этап работа с удалённой базой клиента:
- ввести информацию о клиенте
- выбрать диапазон по времени (за какой период сливать данные)
- выбрать путь сохранения
- сохранить
если сохранение удачно (появляется диалоговое окно), то перейти к этапу 2
если за указанный диапазон данные отсутствуют (появится диалоговое окно), то перейти к работе с другим клиентом (этап 3).
если произошел обрыв связи (появится диалоговое окно), то необходимо повторить процесс еще раз (этап 1).
2. Этап работа с сервером
- ввести информацию о сервере
- выбрать файл который был получен в ходе выполнения этапа 1 (путь сохранения)
- загрузить
если загрузка удачно (диалоговое окно не появляется! в поле (условно назову его) memo появится запись "Загрузка завершена, ....", то перейти к этапу 3
если за указанный файл отсутствуют (появится диалоговое окно), то повторить процесс (этап 2).
если произошел обрыв связи (появится диалоговое окно), то необходимо повторить процесс еще раз (этап 2).
Примечания:
я не прошу сделать за меня весь скрипт мне просто нужна помощь по некоторым вопросам.
Скрипт вообще то я уже сделал, но я не смог реализовать его по той схеме которую привёл в задание: не получается сделать проверку на появление окон и переход в соответствующую часть кода.
Вот сам код, который получилось написать используя хелп по autoit (только по одному из клиентов остальное все однотипное):
код, который приведён выше работает, но хотелось бы реализовать его в виде который был описан в задаче.
Заранее спасибо за ответы и помощь.
Описание: Ув. знатоки. При написании скрипта для автоматизации действий в некоторой программе (не игра!!!) столкнулся с необходимостью использования функций и выполнения действий через 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 секунд и повторяем операцию для следующего клиента
код, который приведён выше работает, но хотелось бы реализовать его в виде который был описан в задаче.
Заранее спасибо за ответы и помощь.