вопрос по Human Emulator

Тема в разделе "PHP", создана пользователем webabrakadabra, 6 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. webabrakadabra

    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");
    но, первая часть код кода не работает. если убрать вторую часть кода то всё работает на ура. ткните носом в ошибки.
     
  2. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    на вскидку, не проверяя возможен косяк здесь
    PHP:
    $anchor->click_by_number("55"); 
    используй лучше
    PHP:
    $anchor->click_by_attribute($attr_name,$attr_value,$exactly=true);
    т.к. номера часто меняются. 100% верняк если брать атрибут href и брать часть урла, но незабывай про $exactly=false если неточное совпадение
     
  3. Murdok

    Murdok

    Регистр.:
    1 окт 2006
    Сообщения:
    236
    Симпатии:
    84
    Не пользовался, но мне кажется не работает из-за того, что нет задержки после исполнения последней строчки первой части кода, просто не успевает запостить.
     
  4. webabrakadabra

    webabrakadabra Создатель

    Регистр.:
    10 сен 2010
    Сообщения:
    15
    Симпатии:
    0
    задержка это sleep() ?
     
  5. Murdok

    Murdok

    Регистр.:
    1 окт 2006
    Сообщения:
    236
    Симпатии:
    84
    да, sleep(3) заставит заснуть на 3 секунды или используйте как написано в скрипте $browser->wait_for(240,1); не знаю как тут будет правильнее
     
  6. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Попробуй так
    В конце, после нажатия на клавишу $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); работает быстрее
     
  7. webabrakadabra

    webabrakadabra Создатель

    Регистр.:
    10 сен 2010
    Сообщения:
    15
    Симпатии:
    0
    попробовал с 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. Zander

    Zander Читатель

    Заблокирован
    Регистр.:
    6 авг 2007
    Сообщения:
    194
    Симпатии:
    36
    Не надо слипа!
    Используйте:
    PHP:
    $browser->wait_for(240,1)
     
  9. webabrakadabra

    webabrakadabra Создатель

    Регистр.:
    10 сен 2010
    Сообщения:
    15
    Симпатии:
    0
    хорошо, возник вопрос по циклам, вот скажем у нас есть некоторый сайт 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");
    }
    но в итоге я переходу на страницы без номера, то есть Перейти по ссылке
    что я не так делаю??
     
  10. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Попробуй так

    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 

     
Статус темы:
Закрыта.