Author Topic: Сценарий поиска текста или картинки  (Read 10379 times)

0 Members and 1 Guest are viewing this topic.

dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Доброго времени суток! Помогите создать сценарий.

добавлено
Я так понимаю, мне сюда 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. Следующее действие.

Спасибо за помощь.
« Last Edit: March 03, 2014, 02:22:02 PM by dr.gopher »
Многое для админа и продвинутого пользователя на www.thin.kiev.ua

redisko55

  • Зашел в гости
  • *
  • Posts: 17
  • Спокойно, так и должно быть. Наверно...
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #1 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)" а-то, не получится
« Last Edit: March 04, 2014, 03:30:21 PM by redisko55 »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #2 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
« Last Edit: March 04, 2014, 04:33:57 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #3 on: March 04, 2014, 04:13:10 PM »
А на... зачем колормод для стандартной иконки, да ещё и без сглаживания. Там и так всё будет находиться.


dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Re: Сценарий поиска текста или картинки
« Reply #4 on: March 04, 2014, 05:28:01 PM »
Сделай поиск по картинке. По треугольнику.
Спасибо за решение!

Не вижу смысла закрывать лису, когда можно обновить страницу...
Теоретически вы правы. Но мне нужно было именно закрывать. Потому немножко изменил.
Всё отлично!
Многое для админа и продвинутого пользователя на www.thin.kiev.ua

dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Re: Сценарий поиска текста или картинки
« Reply #5 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

« Last Edit: March 04, 2014, 10:25:14 PM by dr.gopher »
Многое для админа и продвинутого пользователя на www.thin.kiev.ua

redisko55

  • Зашел в гости
  • *
  • Posts: 17
  • Спокойно, так и должно быть. Наверно...
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #6 on: March 04, 2014, 08:14:10 PM »
Oraven, Вы неправильно разобрались.
Вот именно, когда увидит картинку с ошибкой, будет обновлять страницу, ждать, и снова "сканировать" пока ответ на станет false...
Vint соглашусь с Вами, но лишним не будет... А сглаживание как обозначаеться ? Не нашел... нашел только  bgcolor  и currency  но это не то...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #7 on: March 04, 2014, 11:12:21 PM »
Oraven, Вы неправильно разобрались.
Вот именно, когда увидит картинку с ошибкой, будет обновлять страницу, ждать, и снова "сканировать" пока ответ на станет false...

Тебе еще раз повторить?
Quote
У тебя скрипт никогда не завершится если увидит картинку то будет снова и снова возвращаться к m1:, но getscreen то выше и нового снимка не будет!
Ничего нового он не увидит без  getscreen

dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Re: Сценарий поиска текста или картинки
« Reply #8 on: March 05, 2014, 04:04:23 PM »
Тестирую сценарий.
Обнаружил, что Clickermann частенько ошибается и не находит треугольник.
Возможно есть дополнительные директивы для распознания треугольника?
Многое для админа и продвинутого пользователя на www.thin.kiev.ua

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #9 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


dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Re: Сценарий поиска текста или картинки
« Reply #10 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
Многое для админа и продвинутого пользователя на www.thin.kiev.ua

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #11 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) // останавливаем и закрываем кликерманн

dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Re: Сценарий поиска текста или картинки
« Reply #12 on: March 06, 2014, 05:02:13 PM »
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 75)

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

Многое для админа и продвинутого пользователя на www.thin.kiev.ua

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сценарий поиска текста или картинки
« Reply #13 on: March 06, 2014, 05:15:57 PM »
В справке конечно!
75% это серьезное понижение, чем меньше поцент совпадения тем дольше анализ. Рабочий процент должен быть в диапазона 70-100%
Если сделать картинку в режиме цветокоррекции то процент можно существенно поднять.

Чтобы рассчитать процент можно воспользоваться моим скриптом
http://crapware.aidf.org/forum/index.php?topic=1022.msg4329#msg4329
« Last Edit: March 06, 2014, 05:19:11 PM by Oraven »

dr.gopher

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
    • www.thin.kiev.ua
Re: Сценарий поиска текста или картинки
« Reply #14 on: March 06, 2014, 06:56:24 PM »
В справке конечно!
Ткните носом!

http://crapware.aidf.org/forum/index.php?topic=1022.msg4329#msg4329
Ваш скрипт показывает 100% совпадение.
Пробую разные варианты понижения и время ожидания, но 100-процентной работоспособности добиться не могу.
Подскажите, как включить логирование в реальном времени?
Хочу проследить, в каком месте ошибка.
Многое для админа и продвинутого пользователя на www.thin.kiev.ua