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

Основной раздел => Общие вопросы => Topic started by: Liudmila on January 27, 2018, 06:46:27 PM

Title: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 06:46:27 PM
Добрый день! Очень нуждаюсь в помощи. Предположительно, дело в картинке и цвете пикселя, ибо скрипты взяла из шаблонов и тем на форуме.

Нужно
1. Ждать всплывающее уведомление в браузере, нажать на нём,
2. После загрузки, нажать на кнопку.

Первое  уведомление появляется всегда в одном и том же месте, есть точные координаты для клика.
У второй кнопки всегда одинаковые значения x и $_xmax, ”гуляет” только высота.

Что сделала я-
1. Вырезала и сохранила пока что только вторую картинку. Применила colormode (6), пересохранила и в самом скрипте тоже добавила colormode (6). Предстал случай и задала более чем точные координаты. Кнопку не нажимает.

GETSCREEN // ??????
COLORMODE(6) // ??????????????
IF_PICTURE_IN(465,535,618,474, "29-1.bmp", -1, 80)
 LCLICK($_return1, $_return2)
WAIT(1)

Предоставляю картинки до COLORMODE(6) (28-1) и после (29-1).

2. Попробовала IF_PIXEL_IN. Пробовала по очереди почти все цвета которые нашла и на первой и на второй картинки. Кнопка и ныне там.

GETSCREEN
   IF_PIXEL_IN (580,375, 664,401, "13091443")
LCLICK($_return1, $_return2)
      WAIT(1)
 Нашла прямо кучу цветов, научите пожалуйста, какой из них нужно использовать. Картинка переливается всеми цветами радуги.

3. Т.к. это браузер, попробовала искать по тексту, думаю это оптимальный вариант. Но кнопка и ныне там.

WAIT(1)
KEYDOWN (#CTRL) // Ctrl+F
WAITMS (60)
KEYDOWN (#F)
WAITMS (60)
KEYUP (#F)
KEYUP (#CTRL)
WAITMS(50)
KEYPRESS(#DELETE) // удаляем предыдущий поиск
WAITMS(50)
 
KEYSTRING("SUBMIT", 20) // Вводим текст для поиска
WAITMS(500)
 
GETSCREEN
IF_PIXEL_IN(584,441, 663,466, 12443355) // ищем цвет выделения
   LCLICK($_return1+2, $_return2+2) // кликаем по найденному
   WAITMS(100)
END_IF
 
halt // стоп

Ткните пожалуйста, что не так.




Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 07:21:51 PM
Вопросы по картинке- сначала сохранила (растянула) в размере 50X50.
                                  потом сохранила совсем малютку (вырезала квадрат из расчёта ширины)
                                  и другой вариант, оставила так как во вложении.

Какой вариант применить?
На данный момент ищу инфу про заливку, изменение фона картинки, правильно иду?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 27, 2018, 07:28:31 PM
Что то в цветокоррекции какая то картинка размазанная словно её в JPG сохраняли.
Кликер не умеет читать, он всего лишь ищет набор пикселов на экране.
И поэтому достаточно вот такой картинки
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 27, 2018, 07:32:38 PM
В винде применяется сглаживание шрифтов которое каждый раз смазывает тексты немного по другому. Можно попробовать выключить это сглаживание.
Или используй процент совпадения меньше.

У тебя и так там фон ровный, зачем его игнорировать?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 07:33:35 PM
$check = 0
WHILE($check = 0)
GETSCREEN
COLORMODE (6)
IF_PICTURE_IN (1017,590,1082,614, "1.bmp", -1, 90)
LCLICK(1057,595)
WAIT(2)
$check = 1
ELSE
WAITMS(50)
END_IF
END_CYC
$check = 0
WHILE($check = 0)
GETSCREEN
COLORMODE (6)
IF_PICTURE_IN (466,475,884,480, "2.bmp", -1, 90)
$check = 1
MOVE($_return1, $_return2)
WAITMS(300)
LCLICK($_return1, $_return2)
WAITMS(500)
ELSE

Если пойти по первому пути (искать картинку), думаю в конечном итоге должен выглядеть так? Сомневаюсь на счёт MOVE($_return1, $_return2), нужен ли.

И всё таки полагаю, самый быстрый способ - искать текст.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 27, 2018, 07:34:54 PM
Вот здесь неверный синтаксис.
Code: (clickermann) [Select]
IF_PIXEL_IN (580,375, 664,401, "13091443")Там не может быть никаких кавычек.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 07:41:59 PM
Вот здесь неверный синтаксис.
Code: (clickermann) [Select]
IF_PIXEL_IN (580,375, 664,401, "13091443")Там не может быть никаких кавычек.

Спасибо, это я тут почему то добавила кавычки, на самом деле искала без них.
Скажите пожалуйста, цвет-пиксель нужно искать в Пэинте? Читала на форуме, что нужно искать пипеткой, да?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 27, 2018, 07:51:52 PM
Вот здесь неверный синтаксис.
Code: (clickermann) [Select]
IF_PIXEL_IN (580,375, 664,401, "13091443")Там не может быть никаких кавычек.

Спасибо, это я тут почему то добавила кавычки, на самом деле искала без них.
Скажите пожалуйста, цвет-пиксель нужно искать в Пэинте? Читала на форуме, что нужно искать пипеткой, да?

Кликер в редакторе показывает нужный тебе цвет под курсором.
Можно нажать ALT+Q это вставит в скрипт клик с закомментированным цветом. Удобно собирать таким образом цвета, клики конечно потом удаляются.

На счет поиска на скриншоте, это делается в том случаи если цвета меняются из за наведения курсора, или просто их трудно поймарь в реальном времени.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 08:22:24 PM


Кликер в редакторе показывает нужный тебе цвет под курсором.
На счет поиска на скриншоте, это делается в том случаи если цвета меняются из за наведения курсора, или просто их трудно поймарь в реальном времени.
[/quote]

Да, картинка меняет цвет при наведении курсора.
На картинке сохранённой Вами нашлись 2 цвета 16777087, 16777151 - вписать оба?
Подскажите ещё, при поиске пикселя, можно ли изменить масштаб страницы? Картинка с пикселем была сохранена при 100% масштабе, а искать при допустим 50%? Это чтобы не крутить мышь down.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 27, 2018, 08:38:01 PM
Да, картинка меняет цвет при наведении курсора.
На картинке сохранённой Вами нашлись 2 цвета 16777087, 16777151 - вписать оба?
Белый цвет он там кругом, а синий фон есть где то еще кроме этого слова?.
Поэтому думаю лучше искать картинку функцией IF_PICTURE_IN.

Подскажите ещё, при поиске пикселя, можно ли изменить масштаб страницы? Картинка с пикселем была сохранена при 100% масштабе, а искать при допустим 50%? Это чтобы не крутить мышь down.

Нет конечно! Растяжение приведет к эффекту сглаживания.
В каком масштабе ищешь в таком и должна быть сделана картинка поиска.

Ну и в конце концов почему бы и не покрутить?
Code: (clickermann) [Select]
$time = $_time_t + 20 // таймер на 20 секунд
WHILE($time > $_time_t) // ищем картинку не болкее 20 секунд
   GETSCREEN
   COLORMODE (6)
   IF_PICTURE_IN (0,0,1082,614, "1.bmp", -1, 90)
      $time = 0
      LCLICK($_return1+5, $_return2+5)
      WAITMS(100)
   ELSE
      WHEELDOWN // если не найдено крутим страницу вниз
      WAITMS(500)
   END_IF
END_CYC
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 08:51:24 PM

[/quote]
Белый цвет он там кругом, а синий фон есть где то еще кроме этого слова?.
Поэтому думаю лучше искать картинку функцией IF_PICTURE_IN.
[/quote]

[/quote]

Синий есть и в других местах, в процентном соотношении, моя кнопка 50% от остального синего.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 09:00:48 PM
Нет ли такой возможности кликнуть клавишами на найденный через ctrl F фрагмент текста? В обычном режиме нахожу ctrl F и кликаю ctrl ENTER. Можно ли заставить кликер это сделать?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 27, 2018, 09:51:07 PM
Подскажите пожалуйста, можно ли применить этот скрипт к моей 1 части задачи?

GETSCREEN
IF(PXL(1216,601) ! 15724527)
LCLICK(1216,601)
END_IF

На данный момент, цвет при координате - 15724527
Когда всплывёт уведомление=изменится цвет, ЛКМ.
Но! тогда ЛКМ произойдет сразу же при появлении другого цвета, как только начнёт всплывать,
а мне нужно ЛКМ только после того как уведомление всплыло полностью,
можно как то осуществить? или ставить на обум задержку в 1 сек. допустим переж ЛКМ?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 28, 2018, 08:59:12 AM
Если требуется ожидание изменения то это надо поместить в цикл.

Code: (clickermann) [Select]
GETSCREEN
WHILE(PXL(1216,601) = 15724527) // цикл работает если цвет по координате 1216,601 соответствует 15724527
   WAITMS(100)
   GETSCREEN
END_CYC
WAIT(1) // Время на всплытие

LCLICK(1216,601) // Кликаем
WAITMS(100)
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 28, 2018, 09:02:13 AM
Нет ли такой возможности кликнуть клавишами на найденный через ctrl F фрагмент текста? В обычном режиме нахожу ctrl F и кликаю ctrl ENTER. Можно ли заставить кликер это сделать?

А как кликер узнает что текст найден? Все равно нужен анализ пикселов.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 28, 2018, 06:08:12 PM
Господа кликерманы, возможно ли ввести текст по координате в адресную строку браузера? Хотя, координаты могут изменится.
Если да, чем? Кейстрингом?  :-\

Думаю 1. Ждать изменение пикселя- ЛКМ, 2. после загрузки страницы ввести дополнительный текст в адресную строку, 3. нажать комбинацию клавиш.

К сожалению, не могу добиться не нахождение картинки, не пикселя. Выключила другие вкладки, перезагружала, скачала и заставляю работать в Maxthon, не хочет.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Axel on January 28, 2018, 08:57:24 PM
В Chrome, чтобы активировать ввод в адресную строку, достаточно нажать Ctrl + L.
В Maxthon наверняка есть подобное сочетание клавиш!
А адрес лучше вставлять через Клипбоард. Так как кейстрингом, для того, чтобы ввести "двоеточие" нужно зажать "шифт".
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 28, 2018, 10:22:26 PM
В Chrome, чтобы активировать ввод в адресную строку, достаточно нажать Ctrl + L.
В Maxthon наверняка есть подобное сочетание клавиш!
А адрес лучше вставлять через Клипбоард. Так как кейстрингом, для того, чтобы ввести "двоеточие" нужно зажать "шифт".

Спасибо!
Оказалось, сохранив другую картинку, даже без COLORMODE, прекрасно находится и кликает на неё! Проверяла по отдельности эти 2 скрипта- работают. В связи с этим прошу помощи в соединении их во едино.

GETSCREEN
WHILE(PXL(1109,598) = 15658734)
   WAITMS(100)
   GETSCREEN
END_CYC
WAIT(2)
 
LCLICK(1109,598)
WAITMS(100)
GETSCREEN
IF_PICTURE_IN (397,368,700,670, "DA.bmp", -1, 90)
LCLICK($_return1+5, $_return2+5)
      WAITMS(100)
   ELSE
      WHEELDOWN // ???? ?? ??????? ?????? ???????? ????
      WAITMS(500)
   END_IF
END_CYC
HALT



Необходимо ли в самом начале скрипта добавить
$check = 0
WHILE($check = 0) 

WHEELDOWN прокрутит страницу до конца или крутит пока не находит картинку?

может ещё какие замечания?


Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 29, 2018, 06:20:24 AM
Не в самом начале а там где нужно!

Верный скрипт
Code: (clickermann) [Select]
GETSCREEN
WHILE(PXL(1109,598) = 15658734)
   WAITMS(100)
   GETSCREEN
END_CYC
WAIT(2)

LCLICK(1109,598)
WAITMS(100)

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (397,368,700,670, "DA.bmp", -1, 90)
      LCLICK($_return1+5, $_return2+5)
      WAITMS(100)
   ELSE
      WHEELDOWN
      WAITMS(500)
   END_IF
END_CYC

HALT

WHEELDOWN прокрутит страницу до конца или крутит пока не находит картинку?

В цикле ищем картинку, если не находим прокручиваем немного вниз и снова ищем.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 29, 2018, 10:17:37 PM
Не в самом начале а там где нужно!

Верный скрипт


Спасибо! Но, куда передвинуть HALT?, ибо кликает по последним координатам без остановки?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Axel on January 29, 2018, 11:41:05 PM
В одном из "тел" цикла нужно поменять значение ключа $check с = 0 на = 1 в зависимости от необходимости.
В общем нужно добавить условие выхода из цикла while. Или дальше прокрутить страницу.
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 29, 2018, 11:46:19 PM
Не в самом начале а там где нужно!

Верный скрипт


Спасибо! Но, куда передвинуть HALT?, ибо ищет картинку+ ЛКМ срабатывает без остановки?
Так понимаю, после прокрутки полного цикла, меняется пиксель по первым координатам (загрузилась новая страница) и он срабатывает снова, вместо того, чтобы ждать реальной и нужной мне смены пикселя. Добавить в скрипт рефреш на исходную страницу?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on January 29, 2018, 11:51:53 PM
В одном из "тел" цикла нужно поменять значение ключа $check с = 0 на = 1 в зависимости от необходимости.
В общем нужно добавить условие выхода из цикла while. Или дальше прокрутить страницу.
а просто вернутся на исходную, путём добавления одного LCLICK?
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Oraven on January 30, 2018, 06:59:26 AM
Конечно же нужно написать выход из цикла.
Code: (clickermann) [Select]
    GETSCREEN
    WHILE(PXL(1109,598) = 15658734)
       WAITMS(100)
       GETSCREEN
    END_CYC
    WAIT(2)
     
    LCLICK(1109,598)
    WAITMS(100)
     
    $check = 0 // Присваиваем значение 0 переменной $check
    WHILE($check = 0) // цикл работает если $check равна 0
       GETSCREEN
       IF_PICTURE_IN (397,368,700,670, "DA.bmp", -1, 90)
          $check = 1 // Меняем значение и цикл перестанет повторяться         
          LCLICK($_return1+5, $_return2+5)
          WAITMS(100)
       ELSE
          WHEELDOWN
          WAITMS(500)
       END_IF
    END_CYC
     
    HALT
Title: Re: Найти картинку, пиксель или текст, как проще?
Post by: Liudmila on February 05, 2018, 07:20:35 PM

Хочу выразить свою благодарность создателям форума, мальчикам, которые помогли составить скрипты, а главное, мальчику, который в письме подбодрил и посоветовал написать тут. Ещё совсем недавно, я была уверена в том что- Где я, а где скрипт.
С Вашей помощью всё получилось! 
Спасибо!!!
 :-*