Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: Ri on August 17, 2017, 07:35:04 AM
-
Каждую итерацию коо клика переносятся ~ на 30 пикселей вниз.
Мой скрипт довольно длинный, но несложный. Он копирует значения из Excel, и в браузере вставляет их. Так надо сделать n раз (примерно 25-50). Первый раз я ищу, куда кликать, сравнивая картинки, но это занимает долгое время. Так что я запоминаю координаты, создаю цикл с таким же кодом (кроме поиска картинки), и в цикле уже кликаю в конкретное место. Первый повтор всё ок, потом мышка спускается вниз (примерно y => y+30px) каждую итерацию. Если тестировать куски кода, то клики не сдвигаются. Помогите, пожалуйста, разобраться :-[
$n_patient = 5 // ЗАПОЛНИТЬ количеством пациентов в файле
//нажать на поле
LCLICK($_return1, $_return2)
WAITMS (100)
//Копировать значение
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (200)
KEYDOWN (#C)
WAITMS (1000)
KEYUP (#C)
KEYUP (#CTRL)
// первый переход в гугл, получение координат
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,50, "chrome.bmp", -1, 80) //панель mustb сверху
LCLICK($_return1, $_return2)
$chrome_x = $_return1
$chrome_y = $_return2
WAITMS(1000)
END_IF
// жмяк на Добавить
GETSCREEN // снимок
COLORMODE(6) // цветокоррекция снимка
IF_PICTURE_IN (1000,0,$_xmax,200, "add.bmp", -1, 60) // поиск с 60% совпадением
LCLICK($_return1, $_return2)
$add_x = $_return1+10
$add_y = $_return2+10
WAITMS(1500)
END_IF
//жмяк в поле ввода иин
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (400,200, 1500,400, "leftfromlupa.bmp", -1, 100)
LCLICK($_return1, $_return2)
$leftfromlupa_x = $_return1
$leftfromlupa_y = $_return2
WAITMS(1000)
END_IF
//вставка иин
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
//поиск по иин
KEYDOWN (#ENTER)
WAITMS (150)
KEYUP (#ENTER)
WAITMS (500) // ждём, пока выскочит
//жмяк по выскочившему фио
LCLICK($_return1, $_return2+50)
$poppedup_fio_x = $_return1
$poppedup_fio_y = $_return2+50
WAITMS (500)
//первый переход в Эксель, получение координат
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0,$_xmax,50, "excel.bmp", -1, 60)
LCLICK($_return1, $_return2)
$excel_x = $_return1
$excel_y = $_return2
WAITMS(1000)
END_IF
//Переход на поле справа
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать значение
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (150)
KEYUP (#C)
KEYUP (#CTRL)
// переход в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
// переход в поле № снимка
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (400,300, 1000,700, "shotnumber.bmp", -1, 100) // скрин содержит и надпись Дата осмотра
LCLICK($_return1+200, $_return2+20)
$shotnumber_x = $_return1+200
$shotnumber_y = $_return2+30
WAITMS(1000)
END_IF
//вставка номера снимка
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#V)
WAITMS (150)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//Переход на поле справа
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать даты
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (150)
KEYUP (#C)
KEYUP (#CTRL)
// переход в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
//Переход через Дообследование
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//на Дату осмотра
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//вставка даты
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
//Переход через Направлен
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//на Дозу
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//ввод дозы = 5
KEYDOWN (#5)
WAITMS (100)
KEYUP (#5)
WAITMS (100)
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//Переход на поле справа
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать дату след посещения
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (1000)
KEYUP (#C)
KEYUP (#CTRL)
// переход в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
//Переход на дату след посещения
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//вставка даты след посещения
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//Переход на поле справа (дата первого посещения)
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать дату первого посещения
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (150)
KEYUP (#C)
KEYUP (#CTRL)
// переход в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
//переход в подвкладку Заключение !!!
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (500,300,900,500, "conclusion.bmp", -1, 95)
LCLICK($_return1, $_return2)
$conclusion_x = $_return1
$conclusion_y = $_return2+40
WAITMS(1000)
LCLICK($_return1, $_return2) //подвкладка опустится, будет видна кнопка Отмена
END_IF
//переход через Данные учёта (при Табе 1я ссылка)
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//и переход через ссылку Заключение
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//на Дату первого посещения
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//вставка даты первого посещения
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#V)
WAITMS (150)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
//жмяк отмены
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (750,450, $_xmax,$_ymax, "cancel.bmp", -1, 90)
LCLICK($_return1, $_return2)
$cancel_x = $_return1
$cancel_y = $_return2
WAITMS(500)
END_IF
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//убираем выделение поля
KEYDOWN (#ENTER)
WAITMS (150)
KEYUP (#ENTER)
WAITMS (500) // ждём, пока выскочит
//переход на ИИН след человека
KEYDOWN (#DOWN) // переведёт строку вниз
WAITMS (100)
KEYUP (#DOWN)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 1
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 2
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 3
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 4
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
$i = 0
print($i)
print($n_patient)
WHILE($i < $n_patient)
print($i)
print("Вошёл в цикл")
//нажать на поле
//LCLICK(-1,-1)
//WAITMS (10000)
//Копировать значение
WAITMS (2000)
KEYDOWN (#CTRL)
WAITMS (200)
KEYDOWN (#C)
WAITMS (200)
KEYUP (#C)
WAITMS (100)
KEYUP (#CTRL)
WAITMS (1000)
print("Скопировал")
// жмяк в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
print("Перешёл в гугл")
// жмяк на кнопку Добавить
LCLICK($add_x, $add_y)
WAITMS(5000)
print("Нажал на кнопку Добавить")
// жмяк в поле ввода иин
LCLICK($leftfromlupa_x, $leftfromlupa_y)
WAITMS(1500)
print("Нажал в поле ввода иин")
//вставка иин
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
print("Вставил иин")
//поиск по иин. нажать в поле, чтобы сайт поискал
KEYDOWN (#ENTER)
WAITMS (150)
KEYUP (#ENTER)
WAITMS (500) // ждём, пока выскочит
print("Нажал Enter, чтобы сайт поискал")
//жмяк по выскочившему фио
LCLICK($poppedup_fio_x, $poppedup_fio_y)
WAITMS(1000)
print("Нажал по выскочившему фио")
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//Переход на поле справа
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать значение
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (150)
KEYUP (#C)
KEYUP (#CTRL)
// переход в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
// переход в поле № снимка
LCLICK($shotnumber_x, $shotnumber_y)
WAITMS(50)
print("Перешёл на номер снимка")
WAITMS(1000)
//вставка номера снимка
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#V)
WAITMS (150)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
print("Вставил номер снимка")
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
print("Перешёл в Эксель")
//Переход на поле справа
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать дату осмотра
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (150)
KEYUP (#C)
KEYUP (#CTRL)
print("Скопировал дату осмотра")
// переход в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
print("Перешёл в гугл")
//Переход через Дообследование
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
print("TAB")
//на Дату осмотра
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
print("TAB")
//вставка даты
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
print("Вставил дату осмотра")
//Переход через Направлен
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//на Дозу
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//ввод дозы = 5
KEYDOWN (#5)
WAITMS (100)
KEYUP (#5)
WAITMS (100)
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//Переход на поле справа
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать дату след посещения
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (1000)
KEYUP (#C)
KEYUP (#CTRL)
// жмяк в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
//Переход на дату след посещения
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//вставка даты след посещения
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (150)
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//Переход на поле справа (дата первого посещения)
KEYDOWN (#TAB)
WAITMS (100)
KEYUP (#TAB)
WAITMS (100)
//Копировать дату первого посещения
WAITMS (150)
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#C)
WAITMS (150)
KEYUP (#C)
KEYUP (#CTRL)
// жмяк в гугл
LCLICK($chrome_x, $chrome_y)
WAITMS(1000)
//переход в подвкладку Заключение
LCLICK($conclusion_x, $conclusion_y)
WAITMS(1000)
print("Перешёл в подвкладку Заключение")
//переход через Данные учёта (при Табе 1я ссылка)
KEYDOWN (#TAB)
WAITMS (150)
KEYUP (#TAB)
WAITMS (2000) //!!!
print("Внимание TAB")
//и переход через ссылку Заключение
KEYDOWN (#TAB)
WAITMS (150)
KEYUP (#TAB)
WAITMS (2000)
print("Внимание TAB")
//на Дату первого посещения
KEYDOWN (#TAB)
WAITMS (150)
KEYUP (#TAB)
WAITMS (2000)
print("Внимание TAB, потом вставка и Enter")
//вставка даты первого посещения
KEYDOWN (#CTRL)
WAITMS (150)
KEYDOWN (#V)
WAITMS (150)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (2000) //150
print("Вставил дату первого посещения")
//жмяк отмены
LCLICK($cancel_x, $cancel_y)
WAITMS(1000)
print("Нажал на Отмену")
//переход в Эксель
LCLICK($excel_x, $excel_y)
WAITMS(1000)
//убираем выделение поля
KEYDOWN (#ENTER)
WAITMS (150)
KEYUP (#ENTER)
WAITMS (500)
//переход на ИИН след человека
KEYDOWN (#DOWN) // переведёт строку вниз
WAITMS (100)
KEYUP (#DOWN)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 1
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 2
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 3
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
KEYDOWN (#LEFT) // переведёт строку влево 4
WAITMS (100)
KEYUP (#LEFT)
WAITMS (100)
print("Конец итерации")
inc($i)
END_CYC
-
Почему у тебя $_return вне условия поиска? Это системные переменные для вывода найденных координат. Значения в них не обнуляются даже после остановки скрипта. Поэтому они должны быть всегда в условиях поиска для возврата найденных значений.
У тебя сразу в начале кода
LCLICK($_return1, $_return2)
При первом запуске кликера там будет 0,0 а потом последние найденные координаты.
И вообще гораздо лучше экспортировать таблицу в TXT в разделителями по Tab и работать потом с файлом напрямую.
-
Почему у тебя $_return вне условия поиска? Это системные переменные для вывода найденных координат. Значения в них не обнуляются даже после остановки скрипта. Поэтому они должны быть всегда в условиях поиска для возврата найденных значений.
У тебя сразу в начале кода
LCLICK($_return1, $_return2)
При первом запуске кликера там будет 0,0 а потом последние найденные координаты.
И вообще гораздо лучше экспортировать таблицу в TXT в разделителями по Tab и работать потом с файлом напрямую.
1. Согласна, не правильно, но в данном случае он отрабатывает и отрабатывает только 1 раз. Эту строку можно вообще удалить, я её для подстраховки написала, чтобы кликер точно щёлкнул. :)
2. Мне надо, чтобы человек непосредственно видел, что происходит, поэтому такие заморочки с Экселем. Сам Эксель не гонит, я подогнала табами и стрелками) а вот с браузером проблемки
-
По полям ввода в браузере тоже должно переключаться по TAB. Это проще чем кликать, особенно если полей много и на экран все не влазят.
Первый раз я ищу, куда кликать, сравнивая картинки, но это занимает долгое время.
Поиск довольно быстрый, если не делать огромными образцы. достаточно от 5х5 до 50х50. Иногда удобней 2х15, 2х50 и т.д.
В GETSCREEN и COLORMODE можно тоже задавать область.
GETSCREEN(0,0, $_xmax,50)
COLORMODE(6, 0,0, $_xmax,50)
IF_PICTURE_IN(0,0, $_xmax,50, "chrome.bmp", -1, 80)
И процент совпадения - 60% это плохой процент. Обычно там начинаются ложные срабатывания. Рабочий диапазон 75-100, в крайнем случае от 70.
А не проще, вместо прыганья туда-сюда на каждый чих, сначала пробежаться по нужным данным сохраняя их в переменные. Потом переключать на браузер и вставлять все сохранённые. Повторить для другого пациента.
Есть цикл по пациентам, переменная цикла $i. Но она только используется для отсчёта количества пациентов и в кликах нигде не используется.
Следующий пациент это как раз и есть на 30 пкс ниже?
Не видя первого и второго подсказать точнее невозможно.
P.S.
KEYDOWN (#ENTER)
WAITMS (150)
KEYUP (#ENTER)
WAITMS (500) // ждём, пока выскочит
print("Нажал Enter, чтобы сайт поискал")
//жмяк по выскочившему фио
Это прямой путь к сбиванию скрипта. Как только выскакивание протормозит больше 500 мс, так всё дальнейшее пойдёт насмарку.
-
По полям ввода в браузере тоже должно переключаться по TAB.
Тут я опасаюсь, что один из 12и TABов подряд может сбиться. А в начале TABом просто не перейдёшь.
Следующий пациент это как раз и есть на 30 пкс ниже?
Да, 1 цикл - 1 человек. $i - просто для конечного количества выполнений цикла.
Спасибо за хорошие советы, попробую оптимизировать скрипт.
-
Воспользовалась советами Vint'а, скрипт получилось сделать :D
Идею запоминать координаты отбросила, т.к. скрипт стал выполняться с нормальной скоростью после урезки места поиска картинки + подумала, что в некоторых местах координатами бы не обошлось (появится/ не появиться картинка)
TAB'ы убрала в циклы и сделала один большой цикл без повторения кода 2 раза.
Ещё раз спасибо за ответы)