Что нового

[Автоматизация] Проверка условия через поиск пикселя

Dmitry_65

Новичок
Сообщения
7
Репутация
0
Всем привет. Делаю кликер для браузерки. Есть последовательность кликов:

Код:
MouseClick("left",696,422,1) ; выбор слота задания 1
Sleep(2000)
MouseClick("left",1190,392,1) ; "далее"
Sleep(2800)
MouseClick("left",1170,966,1) ; "запуск"
Sleep(2000)

Иногда бывает что на третьем шаге кнопка "запуск" становится неактивна (похоже глюк сервера, происходит чаще всего при быстром запуске задания)
Нужно чтобы скрипт на третьем шаге сверялся с цветом кнопки, если проверка не проходит, то делается еще пара отдельных кликов (обновляет запуск задания)

цвет 0xC08F25 - кнопка активна
цвет 0x4C4C4C - кнопка не активна

Клики в случае несовпадения:
Код:
MouseClick("left",432, 272,1) ; выбрать рабочего
Sleep(500)
MouseClick("left",489, 116,1) ; выбираем из списка


Может есть еще какие варианты проверки?

Дополнительно:
Этот кусок скрипта повторяется 8 раз, ждет 10 минут и опять по кругу (можно ли его как то объединить/оптимизировать чтобы не писать копии "выбор слота задания 1", "далее", "запуск", "выбор слота задания 2", "далее", "запуск", и так 8 раз).

Бывает иногда дисконнект (вылазит сообщение), его бы тоже отследить, перелогиниться, а то скрипт будет кликать в пустое окно.
Есть какие идеи?
 

Whited

Знающий
Сообщения
79
Репутация
10
Лучше перед каждым кликом проверять нужного ли он цвета или нет, если нет то спать пару секунд.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Dmitry_65 [?]
на третьем шаге сверялся с цветом кнопки
Код:
MouseClick("left",696,422,1) ; выбор слота задания 1
Sleep(2000)
MouseClick("left",1190,392,1) ; "далее"
Sleep(2800)
If PixelGetColor(1170,966) = 0x4C4C4C Then
  MouseClick("left",432, 272,1) ; выбрать рабочего
  Sleep(500)
  MouseClick("left",489, 116,1) ; выбираем из списка
  Sleep(2000)
EndIf
MouseClick("left",1170,966,1) ; "запуск"
Sleep(2000)
 
Автор
D

Dmitry_65

Новичок
Сообщения
7
Репутация
0
InnI, идеально, то что надо :smile: Спасибо.
Только еще вопрос.. можно ли сделать отдельное глобальное слежение за пикселем вне моего цикла? На случай дисконекта.
Пример:
вылазит окно при отключении от сервера:
419, 151 - координаты, цвет - 0xFFEFBF (или цвет меняется в координатах 14, 59 на любой другой)
тогда ControlClik 498, 164 - выходим в меню логина
если цвет 0xFFBE32 в координатах 304, 459 появляется на кнопке входа
тогда ControlClik 304, 411 логинимся
ждем входа пока не появится цвет 0x776E39 в координатах 14, 59
продолжаем от куда остановились в главном цикле

Про ControlClik читал, заменил им MouseClick и браузер на IE11, всё работает, единственное не получилось отправить ссылку в адресную строку (пришлось извращаться с доп. окном через Ctrl+o)
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Dmitry_65 [?]
На случай дисконекта
В главном цикле вставляете вызов функции там, где хотите проверять соединение. Саму функцию добавляете в конец скрипта.
Код:
TestConnect() ; <= расставить где надо в главном цикле

; добавить в конец скрипта
Func TestConnect()
  If PixelGetColor(419, 151) = 0xFFEFBF Then MouseClick(498, 164)
  ; Sleep(2000)
  If PixelGetColor(304, 459) = 0xFFBE32 Then MouseClick(304, 411)
  ; Sleep(2000)
  While PixelGetColor(14, 59) <> 0x776E39
    Sleep(500)
  WEnd
EndFunc
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
OffTopic:
Ну почему вы называете флешки браузерками???
 
Верх