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

Основной раздел => Прочее => Topic started by: evgenm on June 01, 2016, 12:32:32 AM

Title: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 12:32:32 AM
Доброго времени суток.
Подскажите плз возможно ли как то сделать чтобы после клика через поиск пикселя картинки, далее можно было-бы задать координаты только по вертикали, без указания горизонтальных координат.
(пробую применить на сайте чтобы предположим при заполнении обьявления кликнул по окну "метро" появляется выпадающее меню со списком метро и следующий клик был на нужное мне метро, которое находится на 50 пунктов ниже. в другой задаче плюс минус похожая проблема, которая могла-бы быть решена без указания горизонтальных координат)

спасибо


KEYDOWN (#CTRL)
WAIT(1)
KEYDOWN (#F)
WAIT(1)
KEYUP (#F)
KEYUP (#CTRL)
WAIT(1)
KEYSTRING("текст поиска") // набрать текст
WAIT(3)
// помещение текущего снимка экрана в буфер программы
// это необходимо для работы всех графических функций и процедур
getscreen
 
// --- конструкция поиска пикселя в буфере экрана ---
// координаты 0, 0, $_xmax, $_ymax описывают прямоугольную область, в которой будет осуществлен поиск. при этом $_xmax и $_ymax содержат максимально возможные значения для текущего разрешения экрана. 255 это код цвета, он соответствует красному. код цвета можно узнать в редакторе, наведя курсор на нужного цвета пиксель
// сама инструкция поиска if_pixel_in по сути представляет собой условие, то есть выполнение кода, который описан внутри условия, зависит от результата проверки самого условия (если пиксель найден) с учетом всех вышеописанных параметров.
if_pixel_in(0, 0, $_xmax, $_ymax, 1729791)
 
   // если пиксель заданного цвета найден, его координаты будут помещены в системные переменные $_return1 и $_return2. можно их распечатать в лог ...
   print("Цвет обнаружен в координатах: ", $_return1, ,":", $_return2)
 
   // ... а можно сразу кликнуть по нему левой кнопкой мыши
   lclick($_return1, $_return2)
 
else   // блок else (вместе с кодом) не обязателен, но он обеспечивает обработку ситуации, когда условие вернуло отрицательный результат
 
   // если ничего не найдено, выводим сообщение
   print("ничего не найдено")
 
end_if   // конец условия

здесь продолжение скрипта с кликом по координатам по вертикали
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 08:52:50 AM
Так продолжай использовать $_return1. Переменная не изменится пока не будут вызваны функции её использующие.
А лучше сохрани её в свою переменную и дальше используй её.
Code: (clickermann) [Select]
$xx = $_return1
P.S. Зачем сюда справку перепичатывать? Замусорил всю суть что хотел.
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Oraven on June 01, 2016, 09:10:53 AM
По моему ему надо вот это
системные переменные в которые возвращаются координаты мыши
$_xmouse
$_ymouse
Code: (clickermann) [Select]
lclick($_return1, $_ymouse)
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 10:59:24 AM
По моему ему надо вот это
системные переменные в которые возвращаются координаты мыши
$_xmouse
$_ymouse
Code: (clickermann) [Select]
lclick($_return1, $_ymouse)

Да, скорее всего этот вариант подходит, насколько я предполагаю он указывает предыдущий клик $_return1 и последующий нужный клик $_ymouse, но как это в скрипте можно прописать?

например так?
lclick($_return1, $_ymouse)
LCLICK($_return1,1060)

или как-то по другому нужно

Попробовал реализовать, получилось чтобы произошел следующий клик, но опять же в такой реализации жесткая привязка к координатам по горизонтали $_return1, а вертикальный клик указывает жестко на заданные координаты $_ymouse.
У меня проблема в том, что на странице блок рекламы вверху страницы и он всегда разный по размерам (по высоте) при обновлении страницы.
Поэтому нельзя указать жестко координаты. Вот я и пробую найти возможность, если такая конечно есть, вести отсчет от точки при поиске пикселя.
как бы точка пикселя будет жестко прописана, а вверх или вниз движения мыши с отсчетом от нее.

Спасибо
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 12:09:46 PM
Значит я угадал, а не Андрей.
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 12:46:00 PM
Значит я угадал, а не Андрей.
может быть, пока знаний у меня не хватает, но из тех тестов что попробовал, то пока тоже самое у меня выходит, что и в случае Андрея.
Используя Ваш пример нахожу точку пикселя, а координаты по вертикали прописаны жестко и это пока не помогло чтобы отсчет пошел от точки пикселя.
думаю не правильно прописываю код, но как правильно пока не понимаю

$xx = $_return1
lclick($_return1, 511)
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 12:50:47 PM
Проблемы с формулировкой вопроса.

Давай так. Сделай скрин  на нём покажи что куда ты хочешь кликать и в каком порядке.
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 12:54:45 PM
Может ты это хочешь?
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "metro.bmp")
   LCLICK($_return1,$_return2)  // клик по выпадающему списку
   WAITMS(300)
   LCLICK($_return1,$_return2 + 20*8) // клик по 8-й строке списка. 20 пкс/строка * 8 строк = 160 пикселов ниже
   WAITMS(100)
END_IF
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 01:01:05 PM
Можно и так:
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "metro.bmp")
    LCLICK($_return1,$_return2)
    WAITMS(300)
   
    // дальше 8 раз клавиша "вниз"
    FOR($i=0, $i < 8)
        KEYPRESS(#DOWN)
        WAITMS(100)
    END_CYC
    KEYPRESS(#ENTER)
    WAITMS(300)
END_IF

Кликнули по выпадающему списку. Список открылся и фокус перевёлся на него. Нажимаем вниз/вверх/PAGEDOWN/PAGEUP для навигации по нему.
Потом ENTER
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 01:06:21 PM
Проблемы с формулировкой вопроса.

Давай так. Сделай скрин  на нём покажи что куда ты хочешь кликать и в каком порядке.
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 01:09:02 PM
находим слово Станция метро
кликаем ниже где окно для записей
прописываем новок
выбираем кликом ниже Новокосино
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 01:20:01 PM
Любой из примеров выше.

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "metro.bmp") // ищем 'Станция метро'
    LCLICK($_return1+300, $_return2+30)  // клик по выпадающему списку
    WAITMS(300)
    KEYSTRING("новок", 30)
    WAITMS(70)
    LCLICK($_return1+300, $_return2+85)  // клик по 2 пункту
    WAITMS(100)
END_IF

Проще сразу набирать полное название, чего мучаться
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "metro.bmp") // ищем 'Станция метро'
    LCLICK($_return1+300, $_return2+30)  // клик по выпадающему списку
    WAITMS(300)
    KEYSTRING("новокосино", 30)
    WAITMS(70)
    KEYPRESS(#ENTER)
    WAITMS(300)
END_IF
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 01:52:08 PM
Любой из примеров выше.

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "metro.bmp") // ищем 'Станция метро'
    LCLICK($_return1+300, $_return2+30)  // клик по выпадающему списку
    WAITMS(300)
    KEYSTRING("новок", 30)
    WAITMS(70)
    LCLICK($_return1+300, $_return2+85)  // клик по 2 пункту
    WAITMS(100)
END_IF

Проще сразу набирать полное название, чего мучаться
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0,$_xmax,$_ymax, "metro.bmp") // ищем 'Станция метро'
    LCLICK($_return1+300, $_return2+30)  // клик по выпадающему списку
    WAITMS(300)
    KEYSTRING("новокосино", 30)
    WAITMS(70)
    KEYPRESS(#ENTER)
    WAITMS(300)
END_IF

Супер, спасибо большое, сразу пару новинок показали которые раньше не использовал)
это поиск по картинке, а не пикселю
и указания координат
 LCLICK($_return1+300, $_return2+30)
не знал что через + можно задавать координаты
век живи век учись
Сам пока мало помогающих скриптов создал, но штуки3-4 уже есть в запасе которые помогли пару сотен тысяч действий сократить ручной работы

В этом что создаю тоже заморочки, можно импортировать обьявления, но телефон, почта и метро не импортируются и приходится вручную эти три пункта подправлять, а если обьявлений 1 тыс или более, то уже трудоемко
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 02:05:58 PM
Может экспортируются?

В этом ничего сложного нет. Сам подобные формы заполняю.
На однотипные пункты прописываю жёстко.
На пункты с вариантами прописываю вариант (или случайность если нужно).
Значения некоторых пунктов вычисляю.
Те, которые в "линейке" объектов всегда разные... заношу либо из файла, либо из тут же заданного массива.

Вот один из десятков вариантов:
[spoiler]
Code: (clickermann) [Select]
#include "..\Libs\Copy_Paste.cms"
#include "..\Libs\brawser.cms"
#name "Занесение атрибутов по одному"


WAITMS(500)
$all = 10

STRSEPARATE("4:6:8:10:12:4:6:8:10:12", ":", $nap)
STRSEPARATE(" 6,2 м3/час: 7,7 м3/час: 8,6 м3/час: 9,3 м3/час: 9,9 м3/час: 7,8 м3/час: 9,3 м3/час:10,2 м3/час:10,5 м3/час: 9,9 м3/час", ":", $pr)

FOR($iter=0, $iter < $all)
   next_tab()
   WAITMS(1000)
   HINTPOPUP(STRCONCAT("из ", $all), $iter + 1)
   
   $s = $nap[$iter]
   IF(STRLEN($s) < 2)
      $par =  STRCONCAT("  ", $s, " м")
   ELSE
      $par =  STRCONCAT(" ", $s, " м")
   END_IF
   
   
   LCLICK(400,324)  // 14651459
   WAITMS(600)
   LCLICK(406,394)  // 16777215
   WAITMS(800)
   FOR($i=0, $i < 3)
      KEYPRESS(#PAGEDOWN)
      WAITMS(300)
   END_CYC
   
   LCLICK(504,481)  // производительность   3
//   LCLICK(515,784)  // материал, напор  2
//   LCLICK(456,497)  // тип  3
   
   
   WAITMS(500)
   LCLICK(322,463)
   WAITMS(500)
   
   TOCLIP($pr[$iter]))  // производительность "14,0 м3/час"
//   TOCLIP($par)  // напор
//   TOCLIP("нержавеющая сталь")  // чугун, нержавеющая сталь, хромоникелевая сталь
//   TOCLIP("циркуляционный")  // скважинный
   
   WAITMS(80)
   paste()
   WAITMS(300)
   LCLICK(266,507)  // 8880640
   WAITMS(1000)
END_CYC

HALT
[/spoiler]
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 02:12:35 PM
Нет пока не экспортируются, сложности у хозяина доски, пытается настроить, но пока не настроил

вы сказали что сами не мало отправляете обьявлений, может как то можно договорится и мои обьявления отправить тоже?)
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 02:18:34 PM
Я не говорил что отправляю объявления. Я говорил что заполняю подобные формы.
Это админки сайтов.
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: Vint on June 01, 2016, 02:27:53 PM
Вот более новый и универсальный пример одного из скриптов:
[spoiler]
Code: (clickermann) [Select]
#include "..\Libs\Copy_Paste.cms"
#include "..\Libs\brawser.cms"
#name "Занесение атрибутов по одному"

//==============================================================================

// количество позиций
$all = 10

$part = 1
// 1 - тип
// 2 - материал
// 3 - напор
// 4 - производительность

$type = "циркуляционный" // скважинный
$mat = "нержавеющая сталь"  // чугун, нержавеющая сталь, хромоникелевая сталь

STRSEPARATE("4:6:8:10:12:4:6:8:10:12", ":", $nap)
STRSEPARATE("6,2:7,7:8,6:9,3:9,9:7,8:9,3:10,2:10,5:9,9", ":", $pr)

//==============================================================================


WAITMS(500)

FOR($iter=0, $iter < $all)
    next_tab()
    WAITMS(1000)
    HINTPOPUP(STRCONCAT("из ", $all), $iter + 1)
   
    // формат строки напора
    $s = $nap[$iter]
    IF(STRLEN($s) < 2)
        $napor =  STRCONCAT("  ", $s, " м")
    ELSE
        $napor =  STRCONCAT(" ", $s, " м")
    END_IF
   
    // формат производительности
    $s = $pr[$iter]
    IF(STRLEN($s) < 4)
        $proizv = STRCONCAT(" ", $pr[$iter], " м3/час")
    ELSE
        $proizv = STRCONCAT($pr[$iter], " м3/час")
    END_IF
   
   
    LCLICK(400,324)  // добавить атрибут
    WAITMS(600)
    LCLICK(406,394)  // список атрибутов
    WAITMS(800)
   
    // мотаем вниз на $n страниц
    IF(($part = 1) | ($part = 4))
        $n = 3
    ELSE
        $n = 2
    END_IF
    FOR($i=0, $i < $n)
        KEYPRESS(#PAGEDOWN)
        WAITMS(300)
    END_CYC
   
    // выбор атрибута
    SWITCH($part)
    CASE(1)
        LCLICK(456,497)  // тип  3
    CASE(2)
        LCLICK(515,784)  // материал  2
    CASE(3)
        LCLICK(515,784)  // напор  2
    CASE(4)
        LCLICK(504,481)  // производительность   3
    END_SWITCH
   
    // поле значение
    WAITMS(500)
    LCLICK(322,463)
    WAITMS(500)
   
    // вставляем значение
    SWITCH($part)
    CASE(1)
        TOCLIP($type)
    CASE(2)
        TOCLIP($mat)
    CASE(3)
        TOCLIP($napor)
    CASE(4)
        TOCLIP($proizv)
    END_SWITCH
   
    WAITMS(80)
    paste()
    WAITMS(300)
   
    // кнопка добавить
    LCLICK(266,507)
    WAITMS(1000)
END_CYC

HALT
[/spoiler]

По такому принципу делаются для разных типов. Очень помогает в занесении сотен позиций разделённых на десятки групп.
Title: Re: Клик мышью ниже клика после поиска по пикселю
Post by: evgenm on June 01, 2016, 03:01:57 PM
админка сайтов это сила, как раз один из скриптов который сделал для этого и служит, в программе Зеброид создается контент, а потом скрипт переносит его в админку с заполнением всех полей. Создаю таким путем виртуальные категории, тысяч 10-15 уже сделано, вручную в день штук 200-300 можно сделать и то надоест надолго)