Вопросы Php по Human Emulator

preg_match_all('/reachbanner.*">(.*?)\/div>/isU', $page, $out);
по умолчанию последнее вхождение
 
PHP:
preg_match_all('/reachbanner.*">(.*?)\/div>/is', $page, $out);

подскажите по регулярке, почему reachbanner захватывает и на /div> не останавливается?
Потому что изначально она жадная тобиш берет максимум того под что подходит шаблон. Для отключения этого используется квантификатор жадности "U"
 
Подскажите как открыть ссылку без атрибута target="_blank"
пишу вот такой код ничего не получается.
PHP:
<?php
// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");
$browser->navigate('Для просмотра ссылки Войди или Зарегистрируйся
$browser->wait_for(240,1);
sleep(3);
// получим все аттрибуты
echo $element->get_all_attributes_by_number(107)."<br><hr>";
// удалим target
$frame->remove_attribute_by_number(107,"target='_blank'") ;
// получим все аттрибуты
echo $element->get_all_attributes_by_number(107)."<br><hr>";
// Quit
$app->quit();
?>

Ваш код не работает потому что вы используете сначала объект $element удаляете у $frame а затем снова смотрите $element. B к тому же неправильно работаете с функцией remove_attribute_by_number, так как вторым параметром нужно передавать только имя удаляемого атрибута.

Для того что бы ваш код работал должно быть так:

// получим все атрибуты
echo $element->get_all_attributes_by_number(107)."<br><hr>";
// удалим target
$element->remove_attribute_by_number(107,"target") ;
// получим все атрибуты
echo $element->get_all_attributes_by_number(107)."<br><hr>";
 
Попробуйте сначала взять значение поля и сохранить в переменную, добавить то что необходимо и вставить обратно. Свойство тега можно посмотреть в инспекторе элементов.

а сработает если там постояноо разный текст?

Сработает. Вот самый простой пример.

PHP:
$value=$input->get_value_by_name('somename');
$value=$value.rand(5, 30);
$input->set_value_by_name('somename', '');  //можно почистить перед вставкой, на всякий случай
$input->set_value_by_name('somename', $value);
 
Последнее редактирование модератором:
Код:
 while ($button->is_exist_by_name("кнопка 1"))
        {
$browser->refresh();
        }
        $anchor->click_by_inner_text('событие');
  
$anchor->click_by_inner_text('кнопка 1');
а возможно сделать так чтоб если СОБЫТИЕ не происходит в течении 7минут то нажимается КНОПКА 1? это реально?
зарание благодарен:friends:

Можно добавить счётчик что бы прерывал цикл while

Код:
// счётчик
$i=0;
while ($button->is_exist_by_name("кнопка 1"))
{
   // если прошло 100 секунд
   // прерываем цикл
   if($i>100)
     break;
   $browser->refresh();
   // ждать секунду 
   sleep(1);
   $i++;
}
$anchor->click_by_inner_text('событие');
  
$anchor->click_by_inner_text('кнопка 1');
 
Здравствуйте. Подскажите пожалуйста, как выбрать изображения в диалоговом окне.
Я пытаюсь загрузить для примера на тестовом полигоне:

PHP:
$browser->navigate('http://humanemulator.info/poligon/inputfile.html');
$browser->wait_for(60,1);
//открывает модальное окно для выбора файлов.
$inputfile->click_by_atribute('name','Name',true);


Как дальше выбрать изображение?
Вычитал Для просмотра ссылки Войди или Зарегистрируйся что в более поздних версиях есть метод $window->execute_open_file но моей версии его к сожалению нету, как быть?

Версия human`a 4.0.14

На тестовой площадке я могу задать путь к файлу c помощью set_value_by_name( )

PHP:
$browser->navigate("http://www.humanemulator.info/poligon/inputfile.html");
$browser->wait_for(30,1);
if ($inputfile->set_value_by_name("Name","C:\\img\\1.jpg")=== true)
  echo "Yes";


Но вот когда я хочу загрузить фото на сайт Для просмотра ссылки Войди или Зарегистрируйся у меня ничего не получается.
Подскажите, что я делаю не так?

PHP:
$browser->navigate('http://900.md/add/');

if ($inputfile->set_value_by_name("foto","C:\\img\\1.jpg")=== true)
  echo "Yes";
if ($inputfile->set_value_by_name("foto","C:\\img\\1.jpg")=== false)
  echo "no";
В консоль я получаю сообщение "no"
 
Интересно, зачем вам модальное окно, если скрипт будет работать на автомате?
попробуйте выбирать средствами PHP, это намного гибче, например вот так.

PHP:
$handle=opendir("c:\\imageFolder");
while(false !== ($file=readdir($handle))) {
  if($file == "." && $file == "..") continue;
  if(substr(strrchr($file, '.'), 1) != 'jpg') continue;
  $listImage[]=$file;  // На выходе в $listImage будет массив картинок с расширением jpg
}
closedir($handle);

Про вставку изображения почитайте вот здесь, подробно все расписано Для просмотра ссылки Войди или Зарегистрируйся
 
Здравствуйте. Подскажите пожалуйста, как выбрать изображения в диалоговом окне.
Я пытаюсь загрузить для примера на тестовом полигоне:

PHP:
$browser->navigate('http://humanemulator.info/poligon/inputfile.html');
$browser->wait_for(60,1);
//открывает модальное окно для выбора файлов.
$inputfile->click_by_atribute('name','Name',true);


Как дальше выбрать изображение?
Вычитал Для просмотра ссылки Войди или Зарегистрируйся что в более поздних версиях есть метод $window->execute_open_file но моей версии его к сожалению нету, как быть?

Версия human`a 4.0.14

На тестовой площадке я могу задать путь к файлу c помощью set_value_by_name( )

PHP:
$browser->navigate("http://www.humanemulator.info/poligon/inputfile.html");
$browser->wait_for(30,1);
if ($inputfile->set_value_by_name("Name","C:\\img\\1.jpg")=== true)
  echo "Yes";


Но вот когда я хочу загрузить фото на сайт Для просмотра ссылки Войди или Зарегистрируйся у меня ничего не получается.
Подскажите, что я делаю не так?

PHP:
$browser->navigate('http://900.md/add/');

if ($inputfile->set_value_by_name("foto","C:\\img\\1.jpg")=== true)
  echo "Yes";
if ($inputfile->set_value_by_name("foto","C:\\img\\1.jpg")=== false)
  echo "no";
В консоль я получаю сообщение "no"

Открыв указанную Вами страницу в последнем Хумане и использовав инспектор элементов я увидел, что поле ввода файла куда Вы пытаетесь добавить путь находится во фрейме, таким образом код будет следующий:
Код:
$browser->navigate('http://900.md/add/');

if ($inputfile->set_value_by_name("foto","C:\\img\\1.jpg",0)=== true)
  echo "Yes";
if ($inputfile->set_value_by_name("foto","C:\\img\\1.jpg",0)=== false)
  echo "no";

НО я сомневаюсь что данный метод будет работать. Причины описаны в указанной выше статье. Если коротко, то обычно поля ввода заворачивают в дополнительные тэги или в js, для того что бы, например, подгружать привью фотки, которую Вы пытаетесь добавить. Функция set_value_by_name тупо задаёт значение указанному в функции полю, таким образом, значение не проходит через все тэги, как следствие не срабатывает js и не подгружается фото и, соответственно, фотка не подгружается. Для обхода таких ситуаций и была добавлена функция
Код:
$window->execute_open_file($text,$path,$btn_text,$exactly=true,$thread=false);
Которая вводит путь к файлу прямо в диалог открытия файла, который вызывается по клику на кнопку "Обзор..." и таким образом значение проходит везде где надо.
К тому же если мне не изменяет память, то в указанной Вами версии программы есть другая функция ввода значения в поля ввода пути. Точно не помню что то типа insert_by_что то там. Это можно посмотреть в диалоге добавления кода, который вызывается по горячим клавишам ctrl+alt+right. Выбираете закладку inputfile и ищете среди открывшегося списка функций.
 
Последнее редактирование:
Добрый день! Как подключить к программе SOCKS прокси?
 
Код:
$browser->enable_proxy("all connections","socks=66.176.128.64:24213"); // задаём соксы для конкретного соединения

если нужно подключить socks5 то на форуме хуман эмулятор есть класс с помощью которого это можно сделать.
 
Назад
Сверху