вопрос по Human Emulator

Статус
В этой теме нельзя размещать новые ответы.

webabrakadabra

Создатель
Регистрация
10 Сен 2010
Сообщения
15
Реакции
0
Здравствуйте, я новичок в плане использования Human Emulator. Необходимо реализовать скрипт который оставляет комменты. Вот что получилось:
PHP:
require("../Templates/xweb_human_emulator.php");
////////первая часть кода
$browser->navigate('http://sport.bigmir.net/football');
$browser->wait_for(240,1);
$anchor->click_by_number("55");
$browser->wait_for(240,1);
$anchor->click_by_inner_text("Добавить комментарий","true");
$input->set_value_by_name("userName","Вася");
$textarea->set_value_by_name("cmnt_text","классно, я так и думал)");
$button->click_by_inner_text("Добавить","true");
/////////////вторая часть кода
$browser->navigate('http://sport.bigmir.net/football');
$browser->wait_for(240,1);
$anchor->click_by_number("59");
$browser->wait_for(240,1);
$anchor->click_by_inner_text("Добавить комментарий","true");
$input->set_value_by_name("userName","Сеня");
$textarea->set_value_by_name("cmnt_text","кулл");
$button->click_by_inner_text("Добавить","true");
но, первая часть код кода не работает. если убрать вторую часть кода то всё работает на ура. ткните носом в ошибки.
 
на вскидку, не проверяя возможен косяк здесь
PHP:
$anchor->click_by_number("55");
используй лучше
PHP:
$anchor->click_by_attribute($attr_name,$attr_value,$exactly=true);
т.к. номера часто меняются. 100% верняк если брать атрибут href и брать часть урла, но незабывай про $exactly=false если неточное совпадение
 
Здравствуйте, я новичок в плане использования Human Emulator. Необходимо реализовать скрипт который оставляет комменты. Вот что получилось:
PHP:
require("../Templates/xweb_human_emulator.php");
////////первая часть кода
$browser->navigate('http://sport.bigmir.net/football');
$browser->wait_for(240,1);
$anchor->click_by_number("55");
$browser->wait_for(240,1);
$anchor->click_by_inner_text("Добавить комментарий","true");
$input->set_value_by_name("userName","Вася");
$textarea->set_value_by_name("cmnt_text","классно, я так и думал)");
$button->click_by_inner_text("Добавить","true");
/////////////вторая часть кода
$browser->navigate('http://sport.bigmir.net/football');
$browser->wait_for(240,1);
$anchor->click_by_number("59");
$browser->wait_for(240,1);
$anchor->click_by_inner_text("Добавить комментарий","true");
$input->set_value_by_name("userName","Сеня");
$textarea->set_value_by_name("cmnt_text","кулл");
$button->click_by_inner_text("Добавить","true");
но, первая часть код кода не работает. если убрать вторую часть кода то всё работает на ура. ткните носом в ошибки.
Не пользовался, но мне кажется не работает из-за того, что нет задержки после исполнения последней строчки первой части кода, просто не успевает запостить.
 
задержка это sleep() ?
 
да, sleep(3) заставит заснуть на 3 секунды или используйте как написано в скрипте $browser->wait_for(240,1); не знаю как тут будет правильнее
 
Попробуй так
В конце, после нажатия на клавишу $button->click_by_inner_text("Добавить","true");
нужно добавить $browser->wait_for(240,1);
Так как его не было, код не дожидался освобождения браузера, и продолжал идти дальше

И еще после нажатия на ссылки тоже надо вставить, так как браузер не успевает загрузить страничку

PHP:
require("../Templates/xweb_human_emulator.php"); 
////////первая часть кода 
$browser->navigate('http://sport.bigmir.net/football'); 
$browser->wait_for(240,1); 
$anchor->click_by_number("55"); 
$browser->wait_for(240,1); 
$anchor->click_by_inner_text("Добавить комментарий","true"); 
$browser->wait_for(240,1); //!!!!! Добавили !!!!!
$input->set_value_by_name("userName","Вася"); 
$textarea->set_value_by_name("cmnt_text","классно, я так и думал)"); 
$button->click_by_inner_text("Добавить","true"); 
$browser->wait_for(240,1); //!!!!! Добавили !!!!! 
/////////////вторая часть кода 
$browser->navigate('http://sport.bigmir.net/football'); 
$browser->wait_for(240,1); 
$anchor->click_by_number("59"); 
$browser->wait_for(240,1); 
$anchor->click_by_inner_text("Добавить комментарий","true"); 
$browser->wait_for(240,1);  //!!!!! Добавили !!!!!
$input->set_value_by_name("userName","Сеня"); 
$textarea->set_value_by_name("cmnt_text","кулл"); 
$button->click_by_inner_text("Добавить","true"); 
$browser->wait_for(240,1);  //!!!!! Добавили !!!!!

Sleep скорей всего тоже бы помог, но смысла с него нет, он время бы затрачивал, то которое нужно, и еще лишние секунды в придачу, так что с $browser->wait_for(240,1); работает быстрее
 
попробовал с sleep() - работает скрипт
PHP:
require("../Templates/xweb_human_emulator.php");
////////первая часть кода
$browser->navigate('http://sport.bigmir.net/football');
$browser->wait_for(240,1);
$anchor->click_by_number("55");
$browser->wait_for(240,1);
$anchor->click_by_inner_text("Добавить комментарий","true");
$input->set_value_by_name("userName","Вася");
$textarea->set_value_by_name("cmnt_text","классно, я так и думал)");
$button->click_by_inner_text("Добавить","true");
sleep(4);
/////////////вторая часть кода
$browser->navigate('http://sport.bigmir.net/football');
$browser->wait_for(240,1);
$anchor->click_by_number("59");
$browser->wait_for(240,1);
$anchor->click_by_inner_text("Добавить комментарий","true");
$input->set_value_by_name("userName","Сеня");
$textarea->set_value_by_name("cmnt_text","кулл");
$button->click_by_inner_text("Добавить","true");
sleep(4);
Теперь надо немного модернизировать скрипт и можно пользоватся
 
  • Заблокирован
  • #8
Не надо слипа!
Используйте:
PHP:
$browser->wait_for(240,1)
 
хорошо, возник вопрос по циклам, вот скажем у нас есть некоторый сайт site.com, мне надо переходить по страницам которые имеют допустим вид site.com/?id=1231
я хочу допустим использую цикл for, переходить будем по страницам номер которых будет генерироваться. Код :
PHP:
require("../Templates/xweb_human_emulator.php");
$browser->navigate('http://site.com');
$browser->wait_for(240,1);
for($i=0; $i<$5; $i++)
{
    $c=rand();
$browser->navigate('http://site.com/?id='."$c");
}
но в итоге я переходу на страницы без номера, то есть Для просмотра ссылки Войди или Зарегистрируйся
что я не так делаю??
 
Попробуй так

PHP:
require("../Templates/xweb_human_emulator.php"); 
$browser->navigate('http://site.com'); 
$browser->wait_for(240,1); 
for($i=0; $i<$5; $i++) 
{ 
    $browser->navigate('http://site.com/?id='.mt_rand(1,100));// произвольная страница от 1 до 100 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху