Очень часто в интернете нам встречаются формы на web страницах.
Эти формы на веб страницах служат для подачи анкет, подачи объявлений, подачи различных заявок, отправки комментариев и много другого.
Часто так случается, что нам регулярно приходится заполнять одни и теже формы на одном или на разных сайтах, например:
подача объявлений на различные интернет доски. Этот процесс превращается в рутину и нам хочется от неё избавится.
Для этого вам всего лишь нужны программы, которые будут это делать за Вас — скажем программа для автоматической подачи объявлений,
или программа для автозаполнения форм или программа для автозаполнения документов и т.д.
На самом деле, всё что вам нужно это программа Human Emulator,
так как она делает все перечисленные выше действия.
К тому же Human Emulator заполняет веб формы любой сложности, написанные в том числе и с иcпользованием ajax и javascript-ов,
умеет обрабатывать капчи и много ещё чего умеет полезного делать,
что пригодится при решении задач типа заполнения веб форм или подачи объявлений.
Возможно вам также будет интересен наш парсер Авито Недвижимость
В этой статье мы расскажем как накидать простой скрипт автозаполнения форм с помощью Human Emulator на примере подачи объявления на доску авито
(avito.ru).
Для начала создаём новый скрипт и добавляем код для перехода на нужный нам сайт, в нашем случае это доска объявлений авито(avito.ru):
$browser->navigate("http://www.avito.ru/");
Затем переходим к заполнению формы подачи объявления. Для этого кликнем на ссылку с текстом «Подать объявление»:
$anchor->click_by_inner_text("Подать объявление",false);
Теперь приступим к заполнению формы. Для наглядности мы выбираем «кампания» т.к. этот путь немного сложнее и нам придётся заполнить больше полей.
Правым кликом вызываем контекстное меню для чекбокса и по имени задаем на него фокус.
После этого мы используем функцию эмуляции клавиш и после задания фокуса на чекбокс эмулируем нажатие клавиши Вправо(Right):
$keyboard->send_key(39);
Примечание: Просмотр клавиатурный кодов, которые используются в функции send_key можно посмотреть
с помощью меню «Сервис->Просмотр клавиатурных кодов» Хумана Эмулятора или по нажатию клавиш Ctrl+Shift+K.
В открывшемся диалоге нажимаем интересующую нас клавишу и смотрим её код.
Далее для полей ввода текста через вызов контекстного меню для каждого поля и нажатия пункта «изменить элемент->set_value_by_name»
добавляем в скрипт следующий код:
// кампания
$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");
Если надо делаем клик по чекбоксу «Согласен» по имени этого чекбокса:
// чекбокс - согласен
$checkbox->click_by_name("allow_mails");
Далее делаем выбор города.
Если какой либо элемент плохо реагирует на работу с ним даже через атрибуты, то мы всегда можем использовать эмуляцию клавиатуры.
У нас при написании скрипта возникли трудности при работе с элементом выбора города.
Поэтому как раз после ввода телефона эмулируем нажатие клавиши «tab», после нажатия которой, фокус переключается на элемент выбора городов.
Далее после открытие списка городов нажимаем клавишу «space» — она же Пробел.
Теперь выбираем сам город. Тут можно через эмуляцию нажатия 1-й буквы города или через нужное
количество эмуляции нажатия клавиши «вниз». Если нет нужного города, то переходим к вкладке
«выбрать другой город» — эмулируем дважды нажатие буквы «В», но в этом случае не забывайте про
русскую раскладку или используйте функцию хумана для переключения языка:
$keyboard->set_current_language("ru");
Выбрав город, далее по аналогу через эмуляцию клавиш заполняем остальное
// город
$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».
// описание
$textarea->set_value_by_name("description","описание");
// цена
$input->set_value_by_name("price","1234");
Публикуем наше объявление нажатием на кнопку «Подать объявление», которая на самом деле ссылка:
// публикуем
$anchor->click_by_inner_text("Подать объявление",false);
Так же между всеми шагами добавить паузу для того что бы страница с веб формой успевала реагировать на наши действия:
// пауза между шагами sleep(2);
В итоге у нас должен получиться следующий скрипт:
$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 вы легко сможете найти ещё примеры, которые решают подобные задачи.
Вася -потенциальный покупатель HuEm
а что за переменная $xhe_host =»127.0.0.1:7010″; и где она используется? Понятно, что айпишник локалхоста с каким-то портом, только нафига его в скрипте прописывать? (сорян за возможно глупый вопрос)