Как убрать паузы при заполнении полей формы

Все вопросы касающиеся использования
программы можно задать здесь
Ответить
Berazi
Сообщения: 10
Зарегистрирован: 19 мар 2021, 05:38

Как убрать паузы при заполнении полей формы

Сообщение Berazi » 19 мар 2021, 05:47

Добрый день,

Пытаюсь сделать PHP скрипт с помощью Human Emulator Studio x64 v. 7.0.57.
Получается такой вот код для заполнения формы.

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

$input->get_by_id("id_childLastName")->meta_click(46,26);
$keyboard->send_input("Иванов");
$input->get_by_id("id_childFirstName")->meta_click(47,8);
$keyboard->send_input("Иван");
$input->get_by_id("id_childMiddleName")->meta_click(72,29);
$keyboard->send_input("Иваныч");
Когда жму проиграть выполнение скрипта, поля нормально заполняются, но между заполнениями полей непонятные паузы в районе 1-2 секунды.
У меня в форме порядка 50 подобных полей, в итоге форма заполняется очень долго. Все sleep, которые программа сама проставляля при записи скрипта я удалил,
Но всёравно большие паузы между заполнением полей. Видимо где-то какие-то значения по умолчанию нужно поправить, только не знаю где.

Подскажите пожалуйста как убрать паузы, потому как руками заполняться быстрее выходит чем Human Emulator.

Berazi
Сообщения: 10
Зарегистрирован: 19 мар 2021, 05:38

Re: Как убрать паузы при заполнении полей формы

Сообщение Berazi » 19 мар 2021, 06:07

Детальнее посмотрел.

Перед каждым заполнением нового поля формы курсор успевает мигнуть ровно 3 раза.
Т.е. хуман эмулятор кликает в поле, ждет 3 секунды а затем только вводит текст.
Потом через секунду переходит на следующее поле.

Вот как сделать чтобы не тормозил а сразу вводил текст ?

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

Re: Как убрать паузы при заполнении полей формы

Сообщение bigfozzy » 19 мар 2021, 11:41

Попробуйте : $browser->set_wait_params(0,0); + возможно meta_click(x,y) заменить на focus()

Berazi
Сообщения: 10
Зарегистрирован: 19 мар 2021, 05:38

Re: Как убрать паузы при заполнении полей формы

Сообщение Berazi » 20 мар 2021, 14:25

$browser->set_wait_params(0,0); - не помогает никак.

meta_click(x,y) заменил на focus() - работает быстро, но после заполнения формы,
приходится кликать вручную в каждое поле заполненное, чтобы загорелся значек заполненной формы.
пока не прокликаю - форма помечена как не заполненная.

как-то еще можно ускорить или сделать побыстрее этом момент ?

в таком варианте работает идеально
$input->get_by_id("id_childLastName")->meta_click(46,26);
$keyboard->send_input("Иванов");

только перед заполнением поля 2-4 секунды ждет. в итоге очень медленно заполняется большая форма.

Аватара пользователя
leo
Сообщения: 62
Зарегистрирован: 11 мар 2018, 21:19

Re: Как убрать паузы при заполнении полей формы

Сообщение leo » 20 мар 2021, 16:47

Подскажите пожалуйста, где актуальная информация по параметрам meta_click?
Вижу в коде используются координаты, а в текущей документации $wait_browser=true
http://humanemulator.net/objects/DOM/in ... _click.php

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

Re: Как убрать паузы при заполнении полей формы

Сообщение bigfozzy » 20 мар 2021, 17:19

leo писал(а):
20 мар 2021, 16:47
Подскажите пожалуйста, где актуальная информация по параметрам meta_click?
Вижу в коде используются координаты, а в текущей документации $wait_browser=true
http://humanemulator.net/objects/DOM/in ... _click.php
Посмотрите тут:
http://humanemulator.net/objects/DOM/in ... _click.php

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

Re: Как убрать паузы при заполнении полей формы

Сообщение bigfozzy » 20 мар 2021, 17:22

Berazi писал(а):
20 мар 2021, 14:25
$browser->set_wait_params(0,0); - не помогает никак.

meta_click(x,y) заменил на focus() - работает быстро, но после заполнения формы,
приходится кликать вручную в каждое поле заполненное, чтобы загорелся значек заполненной формы.
пока не прокликаю - форма помечена как не заполненная.

как-то еще можно ускорить или сделать побыстрее этом момент ?

в таком варианте работает идеально
$input->get_by_id("id_childLastName")->meta_click(46,26);
$keyboard->send_input("Иванов");

только перед заполнением поля 2-4 секунды ждет. в итоге очень медленно заполняется большая форма.
Можно попробовать так:
$input->get_by_id("id_childLastName")->send_mouse_click(5,5);
$keyboard->send_input("Иванов",0);

Аватара пользователя
leo
Сообщения: 62
Зарегистрирован: 11 мар 2018, 21:19

Re: Как убрать паузы при заполнении полей формы

Сообщение leo » 20 мар 2021, 18:19

Есть 2 функции
1) meta_click - принимает только параметр один параметр - $wait_browser – проверять и ждать окончания навигации
2) send_mouse_click - принимает 2 параметра - смещение по осям X,Y
Верно?


Аватара пользователя
leo
Сообщения: 62
Зарегистрирован: 11 мар 2018, 21:19

Re: Как убрать паузы при заполнении полей формы

Сообщение leo » 20 мар 2021, 23:43

Спасибо!
Может и паузы из-за того, что meta_click() используется с параметрами x,y?
И нужно просто вызывать meta_click() без параметров?

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

Re: Как убрать паузы при заполнении полей формы

Сообщение bigfozzy » 21 мар 2021, 00:09

В метаклике там свои паузы по 30 мс - там 1 раз делается фокус, 2 раза перемещается мышь и затем кликает в области элемента + ожидается браузер:

как вариант попробуйте : meta_click(false);

Эту команду использовать можно не для скорости - а для надежности.

PS: макрос подправили - чтобы координаты не вставлял для meta_click.

Berazi
Сообщения: 10
Зарегистрирован: 19 мар 2021, 05:38

Re: Как убрать паузы при заполнении полей формы

Сообщение Berazi » 21 мар 2021, 20:25

С этим кодом интересность:

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

$input->get_by_id("id_childLastName")->send_mouse_click(5,5);
$keyboard->send_input("Иванов",0);
в блоке формы 5 полей подобных.
я все их перевел на такой вот формат. в итоге первое поле не заполняет, но заполняет все оставшиеся,
при вводе первого поля руками - высвечивает что форма заполнена корректно полностью.

заменяю первый send_mouse_click на meta_click
в итоге первое поле заполняется, не заполняется второе, то которое становится первое с send_mouse_click
и т.д.

в чем тут могут быть грабли и как победить ?

пробовал и с "Иванов",0 и без ноля - без разницы.

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

Re: Как убрать паузы при заполнении полей формы

Сообщение bigfozzy » 21 мар 2021, 22:27

а если еще

$input->get_by_id("id_childLastName")->focus();
$input->get_by_id("id_childLastName")->send_mouse_move(5,5);
$input->get_by_id("id_childLastName")->send_mouse_click(5,5);
$keyboard->send_input("Иванов",0);

PS: как вариант можно завтра (или на неделе) после обеда написать - мы посмотрим вживую по скайпу (телеграму) и найдем решение ?

Berazi
Сообщения: 10
Зарегистрирован: 19 мар 2021, 05:38

Re: Как убрать паузы при заполнении полей формы

Сообщение Berazi » 23 мар 2021, 17:32

спасибо, убрал координаты, стало работать гораздо быстрее.

Ответить