Автокликер Clickermann :: Форум
Основной раздел => Прочее => Topic started 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 // конец условия
здесь продолжение скрипта с кликом по координатам по вертикали
-
Так продолжай использовать $_return1. Переменная не изменится пока не будут вызваны функции её использующие.
А лучше сохрани её в свою переменную и дальше используй её.
$xx = $_return1
P.S. Зачем сюда справку перепичатывать? Замусорил всю суть что хотел.
-
По моему ему надо вот это
системные переменные в которые возвращаются координаты мыши
$_xmouse
$_ymouse
lclick($_return1, $_ymouse)
-
По моему ему надо вот это
системные переменные в которые возвращаются координаты мыши
$_xmouse
$_ymouse
lclick($_return1, $_ymouse)
Да, скорее всего этот вариант подходит, насколько я предполагаю он указывает предыдущий клик $_return1 и последующий нужный клик $_ymouse, но как это в скрипте можно прописать?
например так?
lclick($_return1, $_ymouse)
LCLICK($_return1,1060)
или как-то по другому нужно
Попробовал реализовать, получилось чтобы произошел следующий клик, но опять же в такой реализации жесткая привязка к координатам по горизонтали $_return1, а вертикальный клик указывает жестко на заданные координаты $_ymouse.
У меня проблема в том, что на странице блок рекламы вверху страницы и он всегда разный по размерам (по высоте) при обновлении страницы.
Поэтому нельзя указать жестко координаты. Вот я и пробую найти возможность, если такая конечно есть, вести отсчет от точки при поиске пикселя.
как бы точка пикселя будет жестко прописана, а вверх или вниз движения мыши с отсчетом от нее.
Спасибо
-
Значит я угадал, а не Андрей.
-
Значит я угадал, а не Андрей.
может быть, пока знаний у меня не хватает, но из тех тестов что попробовал, то пока тоже самое у меня выходит, что и в случае Андрея.
Используя Ваш пример нахожу точку пикселя, а координаты по вертикали прописаны жестко и это пока не помогло чтобы отсчет пошел от точки пикселя.
думаю не правильно прописываю код, но как правильно пока не понимаю
$xx = $_return1
lclick($_return1, 511)
-
Проблемы с формулировкой вопроса.
Давай так. Сделай скрин на нём покажи что куда ты хочешь кликать и в каком порядке.
-
Может ты это хочешь?
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
-
Можно и так:
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
-
Проблемы с формулировкой вопроса.
Давай так. Сделай скрин на нём покажи что куда ты хочешь кликать и в каком порядке.
-
находим слово Станция метро
кликаем ниже где окно для записей
прописываем новок
выбираем кликом ниже Новокосино
-
Любой из примеров выше.
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
Проще сразу набирать полное название, чего мучаться
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
-
Любой из примеров выше.
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
Проще сразу набирать полное название, чего мучаться
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 тыс или более, то уже трудоемко
-
Может экспортируются?
В этом ничего сложного нет. Сам подобные формы заполняю.
На однотипные пункты прописываю жёстко.
На пункты с вариантами прописываю вариант (или случайность если нужно).
Значения некоторых пунктов вычисляю.
Те, которые в "линейке" объектов всегда разные... заношу либо из файла, либо из тут же заданного массива.
Вот один из десятков вариантов:
[spoiler]#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]
-
Нет пока не экспортируются, сложности у хозяина доски, пытается настроить, но пока не настроил
вы сказали что сами не мало отправляете обьявлений, может как то можно договорится и мои обьявления отправить тоже?)
-
Я не говорил что отправляю объявления. Я говорил что заполняю подобные формы.
Это админки сайтов.
-
Вот более новый и универсальный пример одного из скриптов:
[spoiler]#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]
По такому принципу делаются для разных типов. Очень помогает в занесении сотен позиций разделённых на десятки групп.
-
админка сайтов это сила, как раз один из скриптов который сделал для этого и служит, в программе Зеброид создается контент, а потом скрипт переносит его в админку с заполнением всех полей. Создаю таким путем виртуальные категории, тысяч 10-15 уже сделано, вручную в день штук 200-300 можно сделать и то надоест надолго)