Author Topic: Найти картинку, пиксель или текст, как проще?  (Read 8574 times)

0 Members and 3 Guests are viewing this topic.

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Добрый день! Очень нуждаюсь в помощи. Предположительно, дело в картинке и цвете пикселя, ибо скрипты взяла из шаблонов и тем на форуме.

Нужно
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 // стоп

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




« Last Edit: February 05, 2018, 09:21:07 PM by Liudmila »

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Вопросы по картинке- сначала сохранила (растянула) в размере 50X50.
                                  потом сохранила совсем малютку (вырезала квадрат из расчёта ширины)
                                  и другой вариант, оставила так как во вложении.

Какой вариант применить?
На данный момент ищу инфу про заливку, изменение фона картинки, правильно иду?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Что то в цветокоррекции какая то картинка размазанная словно её в JPG сохраняли.
Кликер не умеет читать, он всего лишь ищет набор пикселов на экране.
И поэтому достаточно вот такой картинки

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
В винде применяется сглаживание шрифтов которое каждый раз смазывает тексты немного по другому. Можно попробовать выключить это сглаживание.
Или используй процент совпадения меньше.

У тебя и так там фон ровный, зачем его игнорировать?

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
$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), нужен ли.

И всё таки полагаю, самый быстрый способ - искать текст.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот здесь неверный синтаксис.
Code: (clickermann) [Select]
IF_PIXEL_IN (580,375, 664,401, "13091443")Там не может быть никаких кавычек.

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Вот здесь неверный синтаксис.
Code: (clickermann) [Select]
IF_PIXEL_IN (580,375, 664,401, "13091443")Там не может быть никаких кавычек.

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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот здесь неверный синтаксис.
Code: (clickermann) [Select]
IF_PIXEL_IN (580,375, 664,401, "13091443")Там не может быть никаких кавычек.

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

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

На счет поиска на скриншоте, это делается в том случаи если цвета меняются из за наведения курсора, или просто их трудно поймарь в реальном времени.

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile


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

Да, картинка меняет цвет при наведении курсора.
На картинке сохранённой Вами нашлись 2 цвета 16777087, 16777151 - вписать оба?
Подскажите ещё, при поиске пикселя, можно ли изменить масштаб страницы? Картинка с пикселем была сохранена при 100% масштабе, а искать при допустим 50%? Это чтобы не крутить мышь down.
« Last Edit: January 27, 2018, 08:24:34 PM by Liudmila »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Да, картинка меняет цвет при наведении курсора.
На картинке сохранённой Вами нашлись 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

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile

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

[/quote]

Синий есть и в других местах, в процентном соотношении, моя кнопка 50% от остального синего.

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Нет ли такой возможности кликнуть клавишами на найденный через ctrl F фрагмент текста? В обычном режиме нахожу ctrl F и кликаю ctrl ENTER. Можно ли заставить кликер это сделать?
« Last Edit: January 27, 2018, 09:02:52 PM by Liudmila »

Liudmila

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Подскажите пожалуйста, можно ли применить этот скрипт к моей 1 части задачи?

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

На данный момент, цвет при координате - 15724527
Когда всплывёт уведомление=изменится цвет, ЛКМ.
Но! тогда ЛКМ произойдет сразу же при появлении другого цвета, как только начнёт всплывать,
а мне нужно ЛКМ только после того как уведомление всплыло полностью,
можно как то осуществить? или ставить на обум задержку в 1 сек. допустим переж ЛКМ?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Если требуется ожидание изменения то это надо поместить в цикл.

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

LCLICK(1216,601) // Кликаем
WAITMS(100)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Нет ли такой возможности кликнуть клавишами на найденный через ctrl F фрагмент текста? В обычном режиме нахожу ctrl F и кликаю ctrl ENTER. Можно ли заставить кликер это сделать?

А как кликер узнает что текст найден? Все равно нужен анализ пикселов.