X-Scripts

Power by humanemulator

НАШИ КОНТАКТЫ:
ICQ My ICQ 625657402: 625657402
Наш скайп: igor_sev2
Email : order@x-scripts.com

Сообщество программистов и манимейкеров


Human Emulator Free!
Бесплатная версия программы Human Emulator!
Скачать программу можно тут!

Как написать простой скрипт автозаполнения веб форм на Human Emulator

Очень часто в интернете нам встречаются формы на 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);

В итоге у нас должен получиться следующий скрипт:

<?php

$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 вы легко сможете найти ещё примеры, которые решают подобные задачи.



<< Другие статьи