Author Topic: Помогите со скриптом для кликов  (Read 6861 times)

0 Members and 1 Guest are viewing this topic.

Коля

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Помогите со скриптом для кликов
« on: February 15, 2014, 09:16:25 AM »
#name "New Script"

// begin your script here
// помещение текущего снимка экрана в буфер программы
getscreen
// --- конструкция поиска пикселя в буфере экрана ---
if_pixel_in(0, 0, $_xmax, $_ymax, 10620298)
// если пиксель заданного цвета найден, его координаты будут помещены в системные переменные
print("Цвет обнаружен в координатах: ", $_return1, ,":", $_return2)
WAIT(2)
// ... а можно сразу кликнуть по нему левой кнопкой мыши
lclick($_return1, $_return2)
MOVE(83,522)
// блок else (вместе с кодом) не обязателен
else
// если ничего не найдено, выводим сообщение
print("ничего не найдено")
WAIT(5)
getscreen
if_pixel_in(0, 0, $_xmax, $_ymax, 6867438)
if_pixel_in(0, 0, $_xmax, $_ymax, 6212343)
if_pixel_in(0, 0, $_xmax, $_ymax, 7790331)
if_pixel_in(0, 0, $_xmax, $_ymax, 5752311)
if_pixel_in(0, 0, $_xmax, $_ymax, 5948917)
if_pixel_in(0, 0, $_xmax, $_ymax, 6672632)
if_pixel_in(0, 0, $_xmax, $_ymax, 5492990)
MOVE(1117,11)
wait(3)
lclick(1117, 11)
WEIT(15)
// конец условия
end_if

Сценарий вообще должен быть такой:
находит пиксель -> клик по нему (если нет прокрутка вниз и снова ищет)->(ссылка пропадает появляется кружок) ищет этот пиксель-> клик по пикселю-> ждёт примерно 30 сек->закрывает вкладку->запуск снова.
Проблема в том что когда находит первый искомую ссылку кликает по ней и снова ищет такую же ссылку (в зоне поиска их несколько) а не ищет и кликает по второй ссылке. Что делать?   
« Last Edit: February 16, 2014, 10:00:09 AM by Коля »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #1 on: February 15, 2014, 10:04:55 AM »
Ну теперь скрипт хотя бы будет работать. Что бы найти несколько ссылок нужно использовать другую функцию и лучше поиск по фрагменту.

Code: (clickermann) [Select]
getscreen
if_pixel_in(0,0, $_xmax,$_ymax, 10620298)
   lclick($_return1, $_return2)
   MOVE(83,522)
else
   print("ничего не найдено")
   
   WAIT(5)
   getscreen
   if_pixel_in(0,0, $_xmax,$_ymax, 6867438,6212343,7790331,5752311,5948917,6672632,5492990)
      WAIT(1)
      lclick($_return1, $_return2)
      WAIT(25)
      MOVE(1117,11)
      WAIT(3)
      lclick(1117,11)
      WAIT(15)
   end_if
end_if

Коля

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #2 on: February 15, 2014, 11:43:49 AM »
Спасибо. Я наверное не правильно поставил вопрос... Скрипт находит и кликает по "синей" надписи, она пропадает а вместо нее появляется "желтый" кружок, должен кликнуть по нему но не кликает потому что опять ищет "синюю" надпись и кликает по ней. Надписей таких в зоне поиска несколько. Мне нужно что бы нашел "синюю" надпись ->клик по ней-> поиск "желтого" кружка-> клик по нему. Что сделать что бы переставал искать "синю" надпись когда найдёт и начинал искать "желтый" кружок?
« Last Edit: February 15, 2014, 11:49:04 AM by Коля »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #3 on: February 15, 2014, 01:21:49 PM »
Можно использовать циклический поиск синей надписи, если найдет кликнет по ней и перейдет к другому циклу поиска желтого. Нужно только правильно указать область поиска и цвета (0,0, $_xmax,$_ymax, 255)

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0) // цикл поиска синей надписи
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(500)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0) // цикл поиска желтой надписи
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(500)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Коля

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #4 on: February 15, 2014, 03:56:50 PM »
Вот немного доделал этот вариант. Для идеальной работы не хватает что бы когда прокрутка колёсиком мыши доходила до конца страницы и ссылок больше нет->нажимались кнопки PgUp->F5 и всё начиналось заново. Может есть какой нибудь счетчик прокруток или еще одно условие вставить на поиск полоски для прокрутки в определённом месте экрана? 
Code: [Select]
getscreen
if_pixel_in(0,0, $_xmax,$_ymax, 10620298)
   lclick($_return1, $_return2)
   MOVE(83,522)
else
   WHEELDOWN(2)
   print("ничего не найдено")
 end_if
   WAIT(5)
   getscreen
   if_pixel_in(0,0, $_xmax,$_ymax, 6867438,6212343,7790331,5752311,5948917,6672632,5492990)
      WAIT(1)
      lclick($_return1, $_return2)
      WAIT(10)
      lclick(56, 391)
   end_if
« Last Edit: February 16, 2014, 10:01:12 AM by Коля »

Коля

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #5 on: February 15, 2014, 05:55:20 PM »
Уже разобрался с вопросом обновления. Возникла ещё проблема: после нажатия на "желтый" кружок, открывается пустая вкладка (с надписью типа уже просмотрено). Как сделать что бы в таком случае вкладка закрывалась а главная страница обновлялась? Вот что у меня:
Code: [Select]
getscreen
if_pixel_in(0,0, $_xmax,$_ymax, 10620298)
   lclick($_return1, $_return2)
   MOVE(83,522)
else
   WHEELDOWN(3)
WAIT(1)
getscreen
        WAITMS(500)
if_pixel_in(1200, 839, 1279, 932, 14211288) // синя ссылка
KEYPRESS(#PAGEUP)
WAITMS(1000)
KEYPRESS(#F5)
end_if
   print("ничего не найдено")
 end_if
   WAIT(2)
   getscreen
   if_pixel_in(0,0, $_xmax,$_ymax, 6867438,6212343,7790331,5752311,5948917,6672632,5492990) //желтая кнопка
      WAIT(1)
      lclick($_return1, $_return2)
      WAIT(20)
      MOVE(1117,11)
      WAIT(2)
      lclick(1117,11)
      Wait(1)
getscreen
wait(1)
if_pixel_in(469, 178, 616, 194, 0) // просит подтвердить действие
    if_pixel_in(1232, 111, 3085291) // просмотренная ссылка
    wait(1)
    MOVE(1117, 11)
    wait(1)
    lclick(1117, 11)
    wait(1)
    KEYPRESS(#F5)
    end_if
wait(1)
lclick(541, 184)
end_if
      WAIT(10)
      lclick(56, 391)
   end_if
« Last Edit: February 15, 2014, 06:01:45 PM by Коля »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #6 on: February 15, 2014, 06:36:04 PM »
Не верный код! У зоны поиска должно быть 4 числа, далее следуют цвета.
Code: (clickermann) [Select]
      if_pixel_in(1232, 111, 3085291) // просмотренная ссылка
Думую тебе нужно познакомиться с функцией IF_PICTURE_IN

Коля

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #7 on: February 15, 2014, 07:42:20 PM »
Не верный код! У зоны поиска должно быть 4 числа, далее следуют цвета.
Code: (clickermann) [Select]
      if_pixel_in(1232, 111, 3085291) // просмотренная ссылка
Думую тебе нужно познакомиться с функцией IF_PICTURE_IN
После того как поменял координаты поиска, скрипт не так работает. Что в нем не так?
Это должен бы быть анализ вкладки если после нажатия кнопки закрытия вкладки появится диалоговое окно (закрыть или остаться), и если просматривал ссылку. Что-то эта часть у меня не работает.
Code: [Select]
   lclick(1117,11) //закрыть вкладку
      Wait(1)
     getscreen
     wait(1)
     if_pixel_in(469, 178, 616, 194, 0) //подтвердить действие
    if_pixel_in(1218, 103, 1237, 115, 3085291) //уже просматривал
    wait(1)
    MOVE(1117, 11)
    wait(1)
    lclick(1117, 11)
    wait(1)
    lclick(56, 391)
    wait(1)
    lclick(75, 42)
    end_if
wait(1)
lclick(541, 184)
end_if

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #8 on: February 15, 2014, 08:34:52 PM »
Не нужно ставить задержку после getscreen. Возможно задержка слишком маленькая после клика "Закрыть вкладку". А возможно неверно заданы цвета. смысл кода вроде правильный, сложно сказать почему не работает, тебе там виднее.

Коля

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #9 on: February 15, 2014, 10:37:06 PM »
Теперь работает но я попробовал вставить команду GOTO, что бы если выполнялось конкретное действие, скрипт начинался сначала. Подскажите что я сделал не так
Code: [Select]
Begin:
getscreen
if_pixel_in(0,0, $_xmax,$_ymax, 10620298)
   lclick($_return1, $_return2)
   MOVE(83,522)
else
   WHEELDOWN(4)
WAIT(1)
getscreen
if_pixel_in(1269, 900, 1279, 965, 14211288)
        KEYPRESS(#HOME)
WAIT(1)
KEYPRESS(#F5)
WAIT(6)
end_if
   print("ничего не найдено")
   WAIT(3)
   if_pixel_in(0,0, $_xmax,$_ymax, 6867438,6212343,7790331,5752311,5948917,6672632,5492990)
      WAIT(1)
      lclick($_return1, $_return2)
      wait(3)
getscreen
if_pixel_in(1218, 103, 1237, 115, 3085291)
        wait(1)
          MOVE(1117, 11)
        wait(1)
        lclick(1117, 11)
        wait(1)
        lclick(70, 505)
        wait(1)
        KEYPRESS(#F5)
        wait(3)
        goto(Begin:)
  end_if
      WAIT(25)
      MOVE(1117,11)
      WAIT(2)
      lclick(1117,11)
      wait(2)
     getscreen
     if_pixel_in(469, 178, 616, 194, 0)
wait(1)
lclick(541, 184)
      WAIT(10)
      lclick(56, 391)
   end_if
« Last Edit: February 16, 2014, 10:04:07 AM by Коля »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите со скриптом для кликов
« Reply #10 on: February 15, 2014, 11:44:43 PM »
Двоеточие в конце обозначает метку, у самого ГОТО двоеточие не ставится!
Code: (clickermann) [Select]
goto(Begin)