Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting

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”, но идею уловить можно и переписать код под свои задачи.

My blog is Do-Follow


Пишу код, делаю сайты.
Check out my about.me profile!

парсинг сайтов, форумов, интернет магазинов

Want to subscribe?

istinspring twitter account
istinspring facebook account

 Subscribe in a reader Or, subscribe via email:
Enter your email address:  
Find entries :