Очень часто в интернете нам встречаются формы на 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″; и где она используется? Понятно, что айпишник локалхоста с каким-то портом, только нафига его в скрипте прописывать? (сорян за возможно глупый вопрос)

Добавить комментарий

*
*

Необходимые поля отмечены*