HumanEmulator. Пишем framework для регистраций.
Monday, May 3rd, 2010Продолжая монологи про HumanEmulator дам совет о том, как сделать более-менее универсальный шаблон для создания регистраций. Ведь по сути выполняются одни и те же дейсвия : “Зайти сюда, заполнить поля, щелкнуть эту кнопку”. Это естественно касается именно процесса регистрации, далее все равно придется писать код “как положенно”.
$fields = array( "input:name" => $name, "input:mail" => $gmail, "input:conf_mail" => $gmail, "input:profile_url" => "http://google.com", "cptch:4" => "recaptcha_response_field", // cptch - image number, value = field name "checkbox:og_register[1750]" => True, "textarea:profile_description" => $bio, "confirm:button" => "op" );
Это что-то вроде правила для заполнения полей. Далее пишем функцию _register() которая заполняет поля форм согласно правилу. Функция естественно “демо”, её задача дать базовое представление о том, как это всё будет работать.
function _register($fields) {
include("include_all.php");
foreach ($fields as $key=>$value) {
$split = explode(':', $key);
$param_field = $split[0];
$param_name = $split[1];
switch ($param_field) {
case "input" :
$input->set_focus_by_name($param_name);
$input->set_value_by_name($param_name, $value);
break;
case "cptch" :
$captcha = $app->dlg_captcha_from_image_number($param_name);
$input->set_focus_by_name($value);
$input->set_value_by_name($value, $captcha);
break;
case "listbox" :
$list_size = $listbox->get_length_by_name($param_name);
$rnd_elem = rand(1, $list_size - 1);
if ($list_size > 50) {
$rnd_elem = 80;
}
$listbox->select_num_value_by_name($param_name, $rnd_elem);
echo "
\n\n\n";
echo "List name : $param_name List size : $list_size Elem : $rnd_elem \n\n";
break;
case "confirm" :
switch ($param_name) {
case "button" :
$browser->wait(1);
sleep(rand(1,3));
$button->click_by_name($value);
break;
case "btn" :
$browser->wait(1);
sleep(rand(1,3));
$btn->click_by_number($value);
break;
}
break;
case "checkbox" :
$checkbox->click_by_name($param_name);
break;
case "textarea" :
$textarea->set_value_by_name($param_name, $value);
break;
}
}
}
В итоге сам процесс регистрации :
$browser->navigate($url);
$browser->wait(1);
sleep(rand(1,3));
$anchor->click_by_inner_text("Register", true);
$browser->wait(rand(2,6));
_register($fields);
gmail_confirmer($gmail, $pass, 'http://www.site.com/validate/', "site registration");
Используется функция gmail_confirmer о которой можно прочитать в предыдущей статье посвещянной использованию HumanEmulator’а. Весь код как говориться “very basic”, но идею уловить можно и переписать код под свои задачи.



