Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: dr.gopher on March 02, 2014, 08:25:09 PM

Title: Сценарий поиска текста или картинки
Post by: dr.gopher on March 02, 2014, 08:25:09 PM
Доброго времени суток! Помогите создать сценарий.

добавлено
Я так понимаю, мне сюда http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571

При открытии стартовой страницы стандартная ошибка Firefox - Попытка соединения не удалась
По какой-то причине страница открывается бессистемно. Может открыться с первого раза, а может с 5 го.

Условия для сценария:
1. Просмотреть стартовую страницу Firefox
2. Если на странице есть ошибка - Попытка соединения не удалась
3. Clickermann закрывает FIrefox  директивой EXECUTE("C:\kill_firerox.bat") либо кликом.
4. Открывает FIrefox и снова просматривает страницу.
5. Цикл до тех пор, пока ошибки на странице не будет.
6. Следующее действие.

Спасибо за помощь.
Title: Re: Сценарий поиска текста или картинки
Post by: redisko55 on March 04, 2014, 02:50:50 PM
Сделай поиск по картинке. По треугольнику.

Code: [Select]
EXECUTE("C:\Program Files\Mozilla Firefox\firefox.exe")    //Запуск лисы
wait(5)
getscreen (6)
m1:
IF_PICTURE_IN (1,1, $_xmax, $_ymax, "somefile.bmp") // Название картинки
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYPRESS (#R)
   WAITMS (50)
   KEYUP (#CTRL)
   wait(4)
   GOTO(m1)
END_IF
halt


//Скрин делать так
//getscreen
//colormode(6)
//screenshot

//halt
Не вижу смысла закрывать лису, когда можно обновить страницу...
P.S. Скрин картинки делать тоже в "colormode(6)" а-то, не получится
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 04, 2014, 04:05:43 PM
Что еще за getscreen (6)?
У тебя скрипт никогда не завершится если увидит картинку то будет снова и снова возвращаться к m1:, но getscreen то выше и нового снимка не будет!

Более правильный код.
Code: (clickermann) [Select]
EXECUTE("firefox.exe")    //Запуск лисы
wait(10)
$check = 0
WHILE($check = 0)
   getscreen
   IF_PICTURE_IN (0,0, $_xmax, $_ymax, "somefile.bmp") // Название картинки
      KEYPRESS (#F5)
      wait(4)
   ELSE
      $check = 1
   END_IF
END_CYC

halt
Title: Re: Сценарий поиска текста или картинки
Post by: Vint on March 04, 2014, 04:13:10 PM
А на... зачем колормод для стандартной иконки, да ещё и без сглаживания. Там и так всё будет находиться.
Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 04, 2014, 05:28:01 PM
Сделай поиск по картинке. По треугольнику.
Спасибо за решение!

Не вижу смысла закрывать лису, когда можно обновить страницу...
Теоретически вы правы. Но мне нужно было именно закрывать. Потому немножко изменил.
Всё отлично!
Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 04, 2014, 05:40:39 PM
Что еще за getscreen (6)?
У тебя скрипт никогда не завершится если увидит картинку то будет снова и снова возвращаться к m1:, но getscreen то выше и нового снимка не будет!
Более правильный код.

Спасибо! Самому с нахрапа сложновато такое написать.  Почитав форум пытался:
анализировать цвет пикселя
Code: [Select]
GETSCREEN
IF_PIXEL(357, 296, 359, 299, #FFFFFF) //анализ точки на экране

Также пытался найти картинку
Code: [Select]
GETSCREEN
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, server.bmp, -1, 40)
print(«Найден в координатах X=», $_return1, «, Y=», $_return2)
LCLICK($_return1, $_return2)
// код выполнится если пиксел найден
WAIT(1)     
// запустить блокнот
EXECUTE("notepad.exe")
WAIT(5)
Else     
// запуск CMD
EXECUTE("cmd.exe")
END_IF
WAIT(5)
HALT

Но ваше решение полностью подходит под мою задачу.
Вот что получилось:
Code: [Select]
    EXECUTE("firefox.exe")    //Запуск лисы
    wait(15)
    $check = 0
    WHILE($check = 0)
      getscreen
      IF_PICTURE_IN (0,0, $_xmax, $_ymax, "somefile.bmp") // Название картинки
      // убить процесс Firefox
    EXECUTE("taskkill", "/IM firefox.exe")
         wait(5)
    EXECUTE("firefox.exe")    //Запуск лисы
wait(15)     
  ELSE
         $check = 1
      END_IF
    END_CYC     
    halt

P.S. Для тех кто будет реализовывать подобное -
Необходимо сделать скриншот треугольника (обрезать), назвать его somefile.bmp и положить рядом со сценарием *.cms

Title: Re: Сценарий поиска текста или картинки
Post by: redisko55 on March 04, 2014, 08:14:10 PM
Oraven, Вы неправильно разобрались.
Вот именно, когда увидит картинку с ошибкой, будет обновлять страницу, ждать, и снова "сканировать" пока ответ на станет false...
Vint соглашусь с Вами, но лишним не будет... А сглаживание как обозначаеться ? Не нашел... нашел только  bgcolor  и currency  но это не то...
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 04, 2014, 11:12:21 PM
Oraven, Вы неправильно разобрались.
Вот именно, когда увидит картинку с ошибкой, будет обновлять страницу, ждать, и снова "сканировать" пока ответ на станет false...

Тебе еще раз повторить?
Quote
У тебя скрипт никогда не завершится если увидит картинку то будет снова и снова возвращаться к m1:, но getscreen то выше и нового снимка не будет!
Ничего нового он не увидит без  getscreen
Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 05, 2014, 04:04:23 PM
Тестирую сценарий.
Обнаружил, что Clickermann частенько ошибается и не находит треугольник.
Возможно есть дополнительные директивы для распознания треугольника?
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 05, 2014, 05:48:06 PM
Действительно твой скриншот отличается от моего. Нужно использовать процент совпадения.

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 75)
   MOVE($_return1, $_return2)
   WAITMS(100)
END_IF

HALT

Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 06, 2014, 02:37:24 PM
Нужно использовать процент совпадения.
Спасибо. Тестирую.
Пришлось поиграться со временем ожидания. Рабочий вариант сценария.
Code: [Select]
#autorun
EXECUTE("firefox.exe")    //Запуск лисы
    wait(15)
$check = 0
    WHILE($check = 0)

GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 75)
      MOVE($_return1, $_return2)
      WAITMS(100)
 
 
EXECUTE("taskkill", "/IM firefox.exe") //Убить лису
    wait(5)
    EXECUTE("firefox.exe")    //Запуск лисы
     
ELSE
     $check = 1  
    END_IF
wait(15)
    END_CYC
    HALT
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 06, 2014, 04:20:06 PM
Code: (clickermann) [Select]
#autorun
EXECUTE("firefox.exe")    //Запуск лисы
wait(15)
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 75)
      EXECUTE("taskkill", "/IM firefox.exe") //Убить лису
      wait(5)
      EXECUTE("firefox.exe")    //Запуск лисы
      wait(15)
   ELSE
      $check = 1
   END_IF
END_CYC
HALT(1) // останавливаем и закрываем кликерманн
Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 06, 2014, 05:02:13 PM
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 75)

Где можно почитать о проценте совпадения?
  -1, 75 - чему соответствует и как уменьшить процент совпадения?

Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 06, 2014, 05:15:57 PM
В справке конечно!
75% это серьезное понижение, чем меньше поцент совпадения тем дольше анализ. Рабочий процент должен быть в диапазона 70-100%
Если сделать картинку в режиме цветокоррекции то процент можно существенно поднять.

Чтобы рассчитать процент можно воспользоваться моим скриптом
http://crapware.aidf.org/forum/index.php?topic=1022.msg4329#msg4329 (http://crapware.aidf.org/forum/index.php?topic=1022.msg4329#msg4329)
Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 06, 2014, 06:56:24 PM
В справке конечно!
Ткните носом!

http://crapware.aidf.org/forum/index.php?topic=1022.msg4329#msg4329 (http://crapware.aidf.org/forum/index.php?topic=1022.msg4329#msg4329)
Ваш скрипт показывает 100% совпадение.
Пробую разные варианты понижения и время ожидания, но 100-процентной работоспособности добиться не могу.
Подскажите, как включить логирование в реальном времени?
Хочу проследить, в каком месте ошибка.
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 06, 2014, 07:28:50 PM
Раздел "Анализ экрана" функция IF_PICTURE_IN.

Внутрь условий вставь запись в лог
LOGWRITE ("message")
если условие сработает , произойдет запись в лог.

Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 07, 2014, 10:24:20 AM
Раздел "Анализ экрана" функция IF_PICTURE_IN.
Спасибо.
Тесты показали, что Clickermann отрабатывает нормально.

Есть нюансы с запуском.

Если запускать *.CMS с помощью виндового "Назначения задач", то Clickermann не может корректно сделать HALT (1).
Процесс Clickermann.exe остается висеть в процессах.

Пришлось  указать в "Назначения задач" *.BAT файл который"
1. запускает Firefox
2. пауза 15 сек
3. запуск сценария *.CMS
4. пауза - нужное время работы Firefox
5. килл процесса Firefox

P.S. Возможно у меня такая проблема на Win XP из за того, что использую Portable Firefox.
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 07, 2014, 11:13:11 AM
P.S. Возможно у меня такая проблема на Win XP из за того, что использую Portebal Firefox.

что за портативная версия такая?
У меня тоже есть портативный Firefox но запускать там надо FirefoxPortable.exe
Попробуй вот эту сборку
скачай русскоязычную
http://portableapps.com/apps/internet/firefox_portable/localization (http://portableapps.com/apps/internet/firefox_portable/localization)
Title: Re: Сценарий поиска текста или картинки
Post by: dr.gopher on March 07, 2014, 02:55:11 PM
У меня тоже есть портативный Firefox но запускать там надо FirefoxPortable.exe
Ответил в личку
Title: Re: Сценарий поиска текста или картинки
Post by: aden on March 30, 2014, 05:34:55 PM
поясните мне bgcolor  что задает? никак не вкурю где этот цвет игнорится в искомой картинке или на экране в getscreen ?
Title: Re: Сценарий поиска текста или картинки
Post by: Oraven on March 30, 2014, 06:54:06 PM
поясните мне bgcolor  что задает? никак не вкурю где этот цвет игнорится в искомой картинке или на экране в getscreen ?

Это цвет прозрачности в картинке. Помечаешь в своем фрагменте то что должно быть прозрачным каким нибудь цветом. Сохраняешь и указываешь код этого цвета как прозрачность.
Title: Re: Сценарий поиска текста или картинки
Post by: aden on March 30, 2014, 07:37:12 PM
поясните мне bgcolor  что задает? никак не вкурю где этот цвет игнорится в искомой картинке или на экране в getscreen ?

Это цвет прозрачности в картинке. Помечаешь в своем фрагменте то что должно быть прозрачным каким нибудь цветом. Сохраняешь и указываешь код этого цвета как прозрачность.
вот спасибо а то голову ломал этого сильно не хватало
Title: Re: Сценарий поиска текста или картинки
Post by: Laa911 on March 31, 2014, 01:25:47 PM
Помогите разобраться
1. Надо на странице найти кнопку ( она видимо как картинка) клинкнуть на ней раз 100.
( проблема в том что после клика на ней страница с текстом разворачивается и она уезжает из видимой области, надо как то прокрутить, найти ее и опять кликнуть) кнопка синяя с текстов. разворачивает дополнительные строки
2. поле того как все списки отркрыты необходимо найти определенную текстовую фразу. и клинкнуть по ней, через 7 секунд найти слещующую и так прокликать в цикле.

Пока осилил только тупо клик по координате, не программист. дальше мозг не позволяет додуматься..
Подскажите плиз.... :-((((

LCLICK(647,556)  // 13101311
 wait(7)