Очень часто в интернете нам встречаются формы на web страницах.
Эти формы на веб страницах служат для подачи анкет, подачи объявлений, подачи различных заявок, отправки комментариев и много другого.
Часто так случается, что нам регулярно приходится заполнять одни и теже формы на одном или на разных сайтах, например:
подача объявлений на различные интернет доски. Этот процесс превращается в рутину и нам хочется от неё избавится.
Для этого вам всего лишь нужны программы, которые будут это делать за Вас — скажем программа для автоматической подачи объявлений,
или программа для автозаполнения форм или программа для автозаполнения документов и т.д.
На самом деле, всё что вам нужно это программа Human Emulator,
так как она делает все перечисленные выше действия.
К тому же Human Emulator заполняет веб формы любой сложности, написанные в том числе и с иcпользованием ajax и javascript-ов,
умеет обрабатывать капчи и много ещё чего умеет полезного делать,
что пригодится при решении задач типа заполнения веб форм или подачи объявлений.
Возможно вам также будет интересен наш парсер Авито Недвижимость
В этой статье мы расскажем как накидать простой скрипт автозаполнения форм с помощью Human Emulator на примере подачи объявления на доску авито
(avito.ru).
Для начала создаём новый скрипт и добавляем код для перехода на нужный нам сайт, в нашем случае это доска объявлений авито(avito.ru):
1 |
$browser->navigate("http://www.avito.ru/"); |
Затем переходим к заполнению формы подачи объявления. Для этого кликнем на ссылку с текстом «Подать объявление»:
1 |
$anchor->click_by_inner_text("Подать объявление",false); |
Теперь приступим к заполнению формы. Для наглядности мы выбираем «кампания» т.к. этот путь немного сложнее и нам придётся заполнить больше полей.
Правым кликом вызываем контекстное меню для чекбокса и по имени задаем на него фокус.
После этого мы используем функцию эмуляции клавиш и после задания фокуса на чекбокс эмулируем нажатие клавиши Вправо(Right):
1 |
$keyboard->send_key(39); |
Примечание: Просмотр клавиатурный кодов, которые используются в функции send_key можно посмотреть
с помощью меню «Сервис->Просмотр клавиатурных кодов» Хумана Эмулятора или по нажатию клавиш Ctrl+Shift+K.
В открывшемся диалоге нажимаем интересующую нас клавишу и смотрим её код.
Далее для полей ввода текста через вызов контекстного меню для каждого поля и нажатия пункта «изменить элемент->set_value_by_name»
добавляем в скрипт следующий код:
1 2 3 4 5 6 7 8 9 10 11 |
// кампания $input->set_value_by_name("seller_name","имя"); // лицо $input->set_value_by_name("manager","лицо"); // почта $input->set_value_by_name("email","почта"); // телефон $input->set_value_by_name("phone","1234567890"); |
Если надо делаем клик по чекбоксу «Согласен» по имени этого чекбокса:
1 2 |
// чекбокс - согласен $checkbox->click_by_name("allow_mails"); |
Далее делаем выбор города.
Если какой либо элемент плохо реагирует на работу с ним даже через атрибуты, то мы всегда можем использовать эмуляцию клавиатуры.
У нас при написании скрипта возникли трудности при работе с элементом выбора города.
Поэтому как раз после ввода телефона эмулируем нажатие клавиши «tab», после нажатия которой, фокус переключается на элемент выбора городов.
Далее после открытие списка городов нажимаем клавишу «space» — она же Пробел.
Теперь выбираем сам город. Тут можно через эмуляцию нажатия 1-й буквы города или через нужное
количество эмуляции нажатия клавиши «вниз». Если нет нужного города, то переходим к вкладке
«выбрать другой город» — эмулируем дважды нажатие буквы «В», но в этом случае не забывайте про
русскую раскладку или используйте функцию хумана для переключения языка:
1 |
$keyboard->set_current_language("ru"); |
Выбрав город, далее по аналогу через эмуляцию клавиш заполняем остальное
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// город $keyboard->set_current_language("ru"); $keyboard->send_key(9); sleep(2); // волгоград $keyboard->send_key(68,true); sleep(2); // ворошиловский район $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(68,true); sleep(2); // квартиры $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(82,true); sleep(2); // купить (эмуляция "к") $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(82,true); sleep(2); // кол-во комнат $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(50,true); sleep(2); |
C описанием и остальными полями делаем аналогично как с предыдущими полями ввода — работаем через контекстное меню
для каждого поля «изменить элемент->set_value_by_name».
1 2 3 4 5 |
// описание $textarea->set_value_by_name("description","описание"); // цена $input->set_value_by_name("price","1234"); |
Публикуем наше объявление нажатием на кнопку «Подать объявление», которая на самом деле ссылка:
1 2 |
// публикуем $anchor->click_by_inner_text("Подать объявление",false); |
Так же между всеми шагами добавить паузу для того что бы страница с веб формой успевала реагировать на наши действия:
1 2 |
// пауза между шагами sleep(2); |
В итоге у нас должен получиться следующий скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
$xhe_host ="127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // переходим на сайт $browser->navigate("http://www.avito.ru/"); sleep(2); // переходим к форме заполнения $anchor->click_by_inner_text("Подать объявление",false); sleep(2); // начинаем заполнение $radiobox->set_focus_by_name("private"); $keyboard->send_key(39); // кампания $input->set_value_by_name("seller_name","имя"); // лицо $input->set_value_by_name("manager","лицо"); // мыло $input->set_value_by_name("email","почта"); // чекбокс - согласен $checkbox->click_by_name("allow_mails"); // телефон $input->set_value_by_name("phone","1234567890"); // город $keyboard->set_current_language("ru"); $keyboard->send_key(9); sleep(2); // волгоград $keyboard->send_key(68,true); sleep(2); // ворошиловский район $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(68,true); sleep(2); // квартиры $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(82,true); sleep(2); // купить (эмуляция "к") $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(82,true); sleep(2); // кол-во комнат $keyboard->send_key(9,true); sleep(2); $keyboard->send_key(50,true); sleep(2); // описание $textarea->set_value_by_name("description","описание"); // цена $input->set_value_by_name("price","1234"); sleep(2); // подать объявление $anchor->click_by_inner_text("Подать объявление",false); // Quit $app->quit(); ?> |
Аналогично этому скрипту пишутся все скрипты автозаполнения веб форм, автоматической подачи объявлений, добавления комментариев и т.д.
Среди наших скриптов для Human Emulator вы легко сможете найти ещё примеры, которые решают подобные задачи.