javascript confirm и еще пару вопросов

вопросы связанные с работой версии с Chromium
Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

javascript confirm и еще пару вопросов

Сообщение freemast » 08 апр 2019, 19:45

Привет, ребята помогите разобраться, после нажатия на кнопку формы, появляется всплывающее окно на котором нужно нажать кнопку, подскажите как это сделать (смотри скриншот)
Безымянный.png
Безымянный.png (19.42 КБ) 599 просмотров
Еще есть вопрос, подскажите какой командой рестартовать скрипт? (ситуация такая: заходим на сайт, проверяем заголовок, если заголовок ПОКА, значит нужно перезапустить скрипт заново пока не увидим заголовок ПРИВЕТ)
Пробовал $app->restart но оно перезагружает полностью программу а не скрипт.

Спасибо за помощь!

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: javascript confirm и еще пару вопросов

Сообщение Support » 09 апр 2019, 14:29

для обработки сообщения можно попробовать использовать функцию $window->execute_prompt , а для перезапуска скрипта $debug->run_current_script

Ещё такой момент, если у вас скрипт работает длительное время то всё таки лучше делать перезапуск вместе с программой при этом можно добавить в настройках галочки для отчистки кэша и куков, если конечно есть необходимость их чистить. А так перезапуск программы позволяет сбросить используемую память программы на минимум. Также можно для подобной работы использовать облегчённую версию программы XWeb Human Emulator Studio RT.exe, она будет перезапускать быстрее. Единственное что настройки программы нужно задать сначала в обычной версии, либо задавать их в самом скрипте.


Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

Re: javascript confirm и еще пару вопросов

Сообщение freemast » 16 апр 2019, 10:27

Ребят чет не рестартуется скрипт.

После $app->restart() перезагружает программу, а скрипт на выполнение не запускает.

После $debug->run_current_script() выдает ошибку, а если сначала $app->quit() а потом $debug->run_current_script() вообще не чего не происходит.

Код: Выделить всё

if($webpage->get_title() == "403 - Forbidden: Access is denied.") {
	echo "Ошибка 403. Перезапуск бота.".'<br>';
	$debug->run_current_script();
} else {
	echo "Страница найдена. Работаем.".'<br>';
}
Еще вопрос, скрипт при выполнении всегда каждое свое действие открывает в новой вкладке, а не забьет ли это оперативную память если скрипт будет работать долго ?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: javascript confirm и еще пару вопросов

Сообщение Support » 16 апр 2019, 14:57

Для перезапуска скрипта вместе с программой нужно использовать функцию $app->restart вот так:
// перезапускаем скрипт 
$app->restart($debug->get_cur_script_path(),$app->get_port(),$app->get_port());

Если скрипт работает долго то лучше перезапускать его вместе с программой. Количество потребляемой памяти зависит от сайта с которым работает скрипт, если сайт простой то памяти будет уходить меньше, если сайт тяжёлый то памяти может хватить только на 4-5 итераций после чего надо перезапускать программу.

Также для меньшего потребления ресурсов компьютера уже готовый и отлаженный скрипт лучше гонять в облегчённой версии программы XWeb Human Emulator Studio RT.exe.ТО есть настроили отладили всё в обычной версии и когда уже скрипт запускать в рабочий режим, то используем RT версию. EXE версии RT лежит в той же папки где и обычный EXE.
а если сначала $app->quit() а потом $debug->run_current_script() вообще не чего не происходит.
Функция $app->quit() останавливает работу скрипта и после неё уже ничего не будет выполняться.
Еще вопрос, скрипт при выполнении всегда каждое свое действие открывает в новой вкладке, а не забьет ли это оперативную память если скрипт будет работать долго ?
Опять таки тут всё зависит от насколько тяжёлый сайт с которым вы работаете.

При необходимости можно использовать функцию $browser->close_all_tabs(), но самый эффективный способ отчистки памяти это перезапуск программы.

Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

Re: javascript confirm и еще пару вопросов

Сообщение freemast » 18 апр 2019, 11:24

Ребят подскажите как обстоят дела с гугловской рекапчей, пользовался поиском по форуму не нашел рабочего решения.
Есть тема с solverecaptcha но почему то её нет в документации видать не актуальное решение?
Видел в документации упоминания про рекапчу у rucaptcha, примеры которые там приведены не работают.
Может я где то что то упустил ? Сильно не пинайте. Спасибо!

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: javascript confirm и еще пару вопросов

Сообщение Support » 18 апр 2019, 14:10

freemast писал(а):
18 апр 2019, 11:24
Ребят подскажите как обстоят дела с гугловской рекапчей, пользовался поиском по форуму не нашел рабочего решения.
Есть тема с solverecaptcha но почему то её нет в документации видать не актуальное решение?
Видел в документации упоминания про рекапчу у rucaptcha, примеры которые там приведены не работают.
Может я где то что то упустил ? Сильно не пинайте. Спасибо!
вот тут есть пример для antigate рабочий для вк
Это про XEvil

А тут исходники по ВК

Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

Re: javascript confirm и еще пару вопросов

Сообщение freemast » 26 апр 2019, 12:19

Ребят подскажите что может быть, всё работало четко, а сейчас в ответ на решение капчи мне пишут ошибку, даже если капча решена правильно, даже если поставить точку остановы на том месте где появляется капча и решить капчу вручную, все равно показывает ошибку, с обычного браузера работает хорошо, а от бота нет.
Я уже поставил чистку перед запуском бота, не помогает.

Код: Выделить всё


// чистимся
$browser->close_all_tabs();
$browser->clear_address_bar_history();
$browser->clear_cache();
$browser->clear_cookies("");
$browser->clear_history();


Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: javascript confirm и еще пару вопросов

Сообщение Support » 26 апр 2019, 14:06

freemast писал(а):
26 апр 2019, 12:19
Ребят подскажите что может быть, всё работало четко, а сейчас в ответ на решение капчи мне пишут ошибку, даже если капча решена правильно, даже если поставить точку остановы на том месте где появляется капча и решить капчу вручную, все равно показывает ошибку, с обычного браузера работает хорошо, а от бота нет.
Я уже поставил чистку перед запуском бота, не помогает.

Код: Выделить всё


// чистимся
$browser->close_all_tabs();
$browser->clear_address_bar_history();
$browser->clear_cache();
$browser->clear_cookies("");
$browser->clear_history();

а что за ошибка?

Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

Re: javascript confirm и еще пару вопросов

Сообщение freemast » 26 апр 2019, 15:42

Пишет ошибку что много раз ввел капчу неправильно.
Из 10 раз 1 раз проходит, я тут думаю может это из за фреймов у меня стоит поиск до 15 шт, может попробовать уменьшить это значение.
Хотя странно, до этого же все работало.

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: javascript confirm и еще пару вопросов

Сообщение Support » 26 апр 2019, 16:36

freemast писал(а):
26 апр 2019, 15:42
Пишет ошибку что много раз ввел капчу неправильно.
Из 10 раз 1 раз проходит, я тут думаю может это из за фреймов у меня стоит поиск до 15 шт, может попробовать уменьшить это значение.
Хотя странно, до этого же все работало.
Если вы измените количество фреймов это только ограничит или добавит фреймы для поиска в них элементов. Можете в логах выводить тот что определяется и потом проверить правильно ли он его находит, используя скажем список элементов, где нужные элементы можно посмотреть во фреймах. Но если хотя бы один раз скрипт срабатывает нормально, значит логика работы скрипта рабочая. Надо смотреть в сторону проверки результатов, которые приходят с сервиса. Результат распознавания можно выводить в логах и тоже смотреть что там от них приходит. Возможно в документации у них есть что то об этом https://anticaptcha.atlassian.net/wiki/ ... ges/196633.

Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

Re: javascript confirm и еще пару вопросов

Сообщение freemast » 06 май 2019, 11:56

Ребят, подскажите как дождаться выполнения ajax, пробовал $browser->wait_js(0); не помогает, пробовал $browser->wait(0); тоже не помогает.
Пробовал ставить sleep(); работает, но ajax всегда с разным временем выполняется, иногда не хватает sleep, а иногда ajax выполнился, а мы еще спим.

Или тут только писать функцию прозвона? (к примеру: делать постоянный опрос поиском элементов)

Спасибо!

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: javascript confirm и еще пару вопросов

Сообщение bigfozzy » 06 май 2019, 18:22

можно воспользоваться is_exist_by_xxx - для проверки есть ли уже заданный элемент

также в шаблоне есть глобальные переменные:

$bWaitElementExistBeforeAction=false; // проверять есть ли заданный элемент на странице перед действием
$iSecondsWaitElementExistBeforeAction=15; // сколько секунд ждать появления элемента

Аватара пользователя
spaiker
Сообщения: 33
Зарегистрирован: 14 сен 2017, 02:01

Re: javascript confirm и еще пару вопросов

Сообщение spaiker » 06 май 2019, 21:48

Для ожидания на загрузку или пока наоборот элемент показывается как к примеру прогресс загрузки можно использовать такие функции

// ждём на подгрузку нужного нам элемента
function wait_on_element_by_text($tag, $text, $frme=-1, $wait=30, $pause=1)
{
  $a=0;

  while(!$tag->is_exist_by_inner_text($text, false, $frme))
  {   
     sleep($pause);
     if($a>$wait)
     {
        echo("не дождались нужного элемента c текстом $text!<br>");
       return false;   
     }

     $a++;
  }
   
  return true;   
}
// ждём на подгрузку нужного нам элемента по атрибуту
function wait_on_element_by_att($tag, $att_name, $att_text, $frme=-1, $wait=30, $pause=1)
{
  $a=0;

  while(!$tag->is_exist_by_attribute($att_name, $att_text, false, $frme))
  {   
     sleep($pause);
     if($a>$wait)
     {
        echo("не дождались нужного элемента c текстом $text!<br>");
       return false;   
     }

     $a++;
  }
   
  return true;   
}

// ждём пока видимый
function wait_visible_by_att($tag,$at_name,$at_value, $wait=10, $pause=3)
{
  $a=0;
  $dv = $tag->get_by_attribute($at_name,$at_value);
  while(!$dv->is_visibled())
  {   
     sleep($pause);
     if($a>$wait)
     {
        echo("ждём загрузки результатов для $at_name, $at_value!!!<br>");
       return false;   
     }

     $a++;
  }
   
  return true;   

}


пример использования:


// ждём на появление нужного элемента
if(!wait_on_element_by_att($input, "id","txtinput"))
{
	
	// остановить скрип
	$app->quit();
}

// ждём на появление нужного элемента
if(!wait_on_element_by_text($span, "Загрузили"))
{
	// остановить скрип
	$app->quit();   
}

// ожидаем пока элемент видимый на странице
wait_visible_by_att($div,"id","progressShow");


Аватара пользователя
freemast
Сообщения: 12
Зарегистрирован: 05 апр 2019, 21:27

Re: javascript confirm и еще пару вопросов

Сообщение freemast » 28 май 2019, 14:16

Ребят есть желающие помочь мне с гугл капчей? А то у меня уже голова кругом идет от этой капчи. Буду благодарен. Спасибо!

Ответить