Human Emulator Studio 7.0.38 (основанный на Chromium)

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение bigfozzy » 06 июн 2019, 15:20

NitroGenerate писал(а):
06 июн 2019, 09:21
bigfozzy писал(а):
05 июн 2019, 18:45
а можно кусок кода который вы использовали ? - а то непонятно какими вы функциями пользовались.
Форма:

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

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"></head><body>

<form name="test" method="post" action="input1.php">
	<input type="text" name="test-input" value="Hello world" placeholder="enter something here..." size="40">
	<textarea name="comment" cols="40" rows="3"></textarea>
	<p><input type="submit" value="Отправить">
	<input type="reset" value="Очистить"></p>
</form>
</body></html>
Код:

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

$b->input->set_focus_by_name('test-input');
if ($value = $input->get_value_by_name('test-input')) {
    for ($i=1; $i<=strlen($value); $i++) {
        $keyboard->key(46); // DELETE key
        $keyboard->key(8); // BACKSPACE key
        echo "remove one character ($i/".strlen($value).")... \r\n";
        usleep(rand(1000, 1000000));
    }
}
$inp = $input->get_by_number(0);
$inp->focus();
$inp->send_key(35,false);
$inp->send_key(8,false);

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение bigfozzy » 07 июн 2019, 17:01

35 версия перезалита:
  • улучшение работы с фокусом
  • улучшение работы при минимизации
  • улучшение работы логов в окно отладки
  • добавлен объект sftp для работы с SFTP со следующими функциями + тесты :
    • connect
    • create_directory
    • disconnect
    • disconnect_all
    • get_file
    • put_file
    • remove_directory
    • remove_file
  • улучшены сообщения об ошибках для функций ftp
  • добавлена настройка - писать отладочные логи только в файлы (без вывода в отладочную панель)

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 07 июн 2019, 17:47

Стал замечать, что со временем прога начинает тормозить (медленно обрабатывать поступающие запросы)
А сейчас она крашнулась.
Была запущена около 8-ми часов.

http://joxi.ru/MAj3eOyIjoLywr
OS Winows Server 2012 R2 Standart

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

Problem signature:
  Problem Event Name:	APPCRASH
  Application Name:	CefSharp.BrowserSubprocess.exe
  Application Version:	73.1.130.0
  Application Timestamp:	5ccc28e8
  Fault Module Name:	KERNELBASE.dll
  Fault Module Version:	6.3.9600.18938
  Fault Module Timestamp:	5a7ddf0a
  Exception Code:	e0000008
  Exception Offset:	0000000000008eac
  OS Version:	6.3.9600.2.0.0.272.7
  Locale ID:	1033
  Additional Information 1:	7f69
  Additional Information 2:	7f692681b29772007e7c98443e8b0c99
  Additional Information 3:	1e10
  Additional Information 4:	1e10207b8963637164da171615f9f974

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=280262

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt
Например, крашится когда:

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

// found popup window 
$XHEinterface = $div->get_by_attribute('some_key', 'some_value');
// found close button
$XHECildInterface = $XHEinterface->get_child_by_inner_text('', true, true);
// close button not found
if (($number = $XHECildInterface->get_number()) < 0) {
echo $webpage->get_source(); // this code crashed browser
}
Еще браузер крашат эти команды, если выполнять их к не найденному интерфейсу (-1)

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

$XHECildInterface->get_inner_html();
$XHECildInterface->get_inner_text();
$XHECildInterface->get_number();
$XHECildInterface->click();
$XHECildInterface->set_inner_text('88888888888========8888888888');

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение bigfozzy » 07 июн 2019, 18:34

если долго работает - надо browser->recreate вызывать - чтобы память накопленную браузером осовобождать, а еще лучше app->restart периодически

Команды проверим.
Спасибо

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 07 июн 2019, 18:44

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

$XHEinterface = $div->get_by_attribute('some_key', 'some_value');

$XHECildInterface = $XHEinterface->get_child_by_inner_text('some element', true, true);

$XHECildInterface->get_number(); // this code crashed browser 
Удалось более детально локализовать проблему.
Если мы ищем в интерфейсе дочерний элемент: $XHECildInterface = $XHEinterface->get_child_by_inner_text(); (и если такого элемента нет)
То вызов этой команды $XHECildInterface->get_number(); приводит к крашу. И по ходу, так обстоят дела со всеми командами работы с элементами в XHECildInterface, при условии, что искомого элемента нет.
Причем XHECildInterface->is_exist возвращает TRUE даже когда такого элемента нет.

-------------------------
Вообще поведение странное, т.к. $XHEinterface получаю окно, проверяю код $XHEinterface->get_inner_html() - все ок, успешно получил окно.
В окне ищу кнопку, через get_child_by_inner_text или get_child_by_inner_html, с точным и не точным соответствием, всегда XHECildInterface->is_exist возвращает TRUE, а XHECildInterface->get_number() или XHECildInterface->get_inner_text() или XHECildInterface->get_inner_html() крашат браузер.
Причем кнопка есть и она точно должна была быть найдена, но нет.

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение bigfozzy » 07 июн 2019, 19:17

// found popup window 
$XHEinterface = $div->get_by_attribute('some_key', 'some_value');
// found close button
$XHECildInterface = $XHEinterface->get_child_by_inner_text('', true, true);
// close button not found
if (($number = $XHECildInterface->get_number()) < 0) {
echo $webpage->get_source(); // this code crashed browser
}
по первому куску - проблема то что вы выводите в отладочную панель слишком много символов + JS : при замене на echo strlen($webpage->get_source()); - будет отрабатывать нормально - в след версии мы отключим JS в окне отладки - тогда не будет падать.

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение bigfozzy » 07 июн 2019, 20:01

NitroGenerate писал(а):
07 июн 2019, 18:44

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

$XHEinterface = $div->get_by_attribute('some_key', 'some_value');

$XHECildInterface = $XHEinterface->get_child_by_inner_text('some element', true, true);

$XHECildInterface->get_number(); // this code crashed browser 
Удалось более детально локализовать проблему.
Если мы ищем в интерфейсе дочерний элемент: $XHECildInterface = $XHEinterface->get_child_by_inner_text(); (и если такого элемента нет)
То вызов этой команды $XHECildInterface->get_number(); приводит к крашу. И по ходу, так обстоят дела со всеми командами работы с элементами в XHECildInterface, при условии, что искомого элемента нет.
Причем XHECildInterface->is_exist возвращает TRUE даже когда такого элемента нет.

-------------------------
Вообще поведение странное, т.к. $XHEinterface получаю окно, проверяю код $XHEinterface->get_inner_html() - все ок, успешно получил окно.
В окне ищу кнопку, через get_child_by_inner_text или get_child_by_inner_html, с точным и не точным соответствием, всегда XHECildInterface->is_exist возвращает TRUE, а XHECildInterface->get_number() или XHECildInterface->get_inner_text() или XHECildInterface->get_inner_html() крашат браузер.
Причем кнопка есть и она точно должна была быть найдена, но нет.
исправлено, обновлено
Спасибо.

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 07 июн 2019, 23:03

bigfozzy писал(а):
07 июн 2019, 19:17
по первому куску - проблема то что вы выводите в отладочную панель слишком много символов + JS : при замене на echo strlen($webpage->get_source()); - будет отрабатывать нормально - в след версии мы отключим JS в окне отладки - тогда не будет падать.
"мы отключим JS в окне отладки", наверное вы меня неправильно поняли. У меня 2 сервера.
На первом стоит хьюман, а на втором исполняемый php код, который пуляет запросы на первый сервер. Я работаю только со второго сервера и не пользуюсь логами и прочей инфой хьюмана на первом сервере.
Команда: $webpage->get_source() вызывается на втором сервере, в том случае, если что-то пошло не так и нужно сдампить страницу для дальнейшего разбора. Т.к. есть сайты, которые работают на реакте или подобных фреймворках, как правило у них на странице минимум html и много js. Если вы обрежете функцию webpage->get_source() и я не смогу сдампить весь код страницы то для меня это будет большим фелом. Прошу вас, пощадите :D

Потом еще потестл код и выяснилось, что get_source() тут не причем.
Если нормально открыть страницу, и не использовать XHE interface объекты (глубже не тестил, либо дело в дочерних интерфейсах от XHEinterface, либо в родительном XHEinterface), то get_source() не крашит браузер. Ну и наоборот, если открыть эту же страницу и поиграться с XHEinterface, то вызов get_source намертво вешает браузер.

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение bigfozzy » 07 июн 2019, 23:09

"мы отключим JS в окне отладки", наверное вы меня неправильно поняли. У меня 2 сервера.
На первом стоит хьюман, а на втором исполняемый php код, который пуляет запросы на первый сервер. Я работаю только со второго сервера и не пользуюсь логами и прочей инфой хьюмана на первом сервере.
Команда: $webpage->get_source() вызывается на втором сервере, в том случае, если что-то пошло не так и нужно сдампить страницу для дальнейшего разбора. Т.к. есть сайты, которые работают на реакте или подобных фреймворках, как правило у них на странице минимум html и много js. Если вы обрежете функцию webpage->get_source() и я не смогу сдампить весь код страницы то для меня это будет большим фелом. Прошу вас, пощадите :D
на работу функции никак не повлияет - мы отключи выполнения JS у себя в отладочной панели (внизу которая) (уже отключено, а то там при выводе туда source - странные вещи происходили, она его пыталась исполнять)
Потом еще потестл код и выяснилось, что get_source() тут не причем.
Если нормально открыть страницу, и не использовать XHE interface объекты (глубже не тестил, либо дело в дочерних интерфейсах от XHEinterface, либо в родительном XHEinterface), то get_source() не крашит браузер. Ну и наоборот, если открыть эту же страницу и поиграться с XHEinterface, то вызов get_source намертво вешает браузер.
если можно как нибудь чтобы повторить чтобы у нас - версию перезалили с исправлениями, у нас все работает. Возможно дело в уровне вложенности дочерних элементов, сложности или хтмл или динамических обновлениях, или еще что... Надо пощупать детали - чтобы исправить )

если что конечно всегда есть возможность:
browser->run_jquery и browser->run_java_script использовать, но хотелось бы исправить )

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 12 июн 2019, 18:03

Проблема с обработкой confirm() функции
Есть страница с JS кодом:

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

if (confirm("Open Ya.ru page ?")) {
	window.location.href = 'https://ya.ru/';
} else {
	window.location.href = 'https://2ip.ru/';
}
Говорим браузеру, чтобы он всегда соглашался:

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

$browser->enable_browser_message_boxes(true, 'OK');
Пробовал писать и 'Ok' и 'ok' - безрезультатно. Окно с confirm продолжает висеть.
Браузер не реагирует на обработку.

Но тем не менее $browser->enable_browser_message_boxes(false) - работает.

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 14 июн 2019, 11:44

execute_prompt и его вариации не помогли

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

$window->execute_prompt('JavaScript Confirm', $text="",$btn_text="OK", $exactly=false);
$window->execute_prompt('Open ya.ru', $text="",$btn_text="OK", $exactly=false);
Ребята, подскажите, что делать ?

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение Support » 14 июн 2019, 12:03

NitroGenerate писал(а):
14 июн 2019, 11:44
execute_prompt и его вариации не помогли

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

$window->execute_prompt('JavaScript Confirm', $text="",$btn_text="OK", $exactly=false);
$window->execute_prompt('Open ya.ru', $text="",$btn_text="OK", $exactly=false);
Ребята, подскажите, что делать ?
Опишите пожалуйста как повторить у себя вывод этого сообщения.

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 14 июн 2019, 12:29

1. Берем html страницу.
2. Вставляем в нее JS код

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

if (confirm("Open Ya.ru page ?")) {
	window.location.href = 'https://ya.ru/';
} else {
	window.location.href = 'https://2ip.ru/';
}
3. Открываем хьюманом и пробуем обработать окно.

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

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение Support » 14 июн 2019, 12:52

NitroGenerate писал(а):
14 июн 2019, 12:29
1. Берем html страницу.
2. Вставляем в нее JS код

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

if (confirm("Open Ya.ru page ?")) {
	window.location.href = 'https://ya.ru/';
} else {
	window.location.href = 'https://2ip.ru/';
}
3. Открываем хьюманом и пробуем обработать окно.
Используем функцию
$browser->enable_browser_message_boxes(false, 'Ok'); 
Вызов функции делаем перед переходом на страницу где выдаётся сообщение. Если нужно нажать на кнопку Cancel тогда так
$browser->enable_browser_message_boxes(false, 'Cancel');

NitroGenerate
Сообщения: 38
Зарегистрирован: 31 май 2019, 16:26

Re: Human Emulator Studio 7.0.35 (основанный на Chromium)

Сообщение NitroGenerate » 16 июн 2019, 19:35

Спасибо. Это помогло.
Дополните пожалуйста вашу документацию, что бы у других не было вопросов:
http://humanemulator.net/objects/WEB/br ... _boxes.php

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

При запрещенных диалогах ($enable=false), всплывающие диалоги браузера не будут показываться, но будут обрабатываться в соответствии с правилом в $default_answer

Ответить