Эмуляция клавиатуры ломает форму

Dexio

Client
Регистрация
09.05.2014
Сообщения
1 254
Благодарностей
220
Баллы
63
Добрый день. Уже не на первом сайте сталкиваюсь, что не могу заполнить форму, из-за того, что эмуляция клавиатуры использует непонятный метод для меня. При заполнении формы ломаются и символы порой даже дублируются. Хотя с клавиатуры нормально.


Пример проекта. Выполняйте по шагам и увидите как съедет форма, и потом НЕ НАЖАТЬ КНОПКУ отправить. Получается клавиатуру неправильно сэмулировало?
Выглядит вот так



Соотв форма не отправляется.
А при ручном заполнении все работает исправно


И аналогичная проблема на битриксе. Подскажите как это могу вылечить? Может знаете еще варианты как с формами работать, у которых js валидация?

Пост/гет не вариант, тк тут слишком много параметров в запросе, интересует именно формат в браузере.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
5 926
Благодарностей
6 389
Баллы
113
я обычно делаю так
  1. клик или фокус на поле ввода
  2. эмуляция кнопки END переброс каретки в самый конец строки
  3. 10-20 эмуляций бекспейс (удаления символов) ну или сколько надо, обычно делаю в 1,5-2 раза больше чем изначальное число символов, на всякий случай :-)
  4. потом эмуляция того что надо )
всегда работает )
ну или юзай xPath отличная вещь
 

Dexio

Client
Регистрация
09.05.2014
Сообщения
1 254
Благодарностей
220
Баллы
63
всегда работает )
Спасибо,я походу ваши посты ранее и читал и по этой логике пытаюсь повторить, но не работает. Посмотрите пожалуйста, вот пример формы, https://drive.google.com/open?id=17JLbTYBy6TL-oEvWkj6TeKoDhvX_Ucs5
заполняю сначала через SET value, но потом не отправляется, я танцую тоже и с backspace и другими и всеравно не отправляется, только форма ломается
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 926
Благодарностей
6 389
Баллы
113

Dexio

Client
Регистрация
09.05.2014
Сообщения
1 254
Благодарностей
220
Баллы
63

backoff

Client
Регистрация
20.04.2015
Сообщения
5 926
Благодарностей
6 389
Баллы
113
да, понял что вы имеете ввиду. проблема странная, даже самому интересно стало, пока выхода через браузер не вижу
 

Dexio

Client
Регистрация
09.05.2014
Сообщения
1 254
Благодарностей
220
Баллы
63
да, понял что вы имеете ввиду. проблема странная, даже самому интересно стало, пока выхода через браузер не вижу
Спасибо что подтвердили. Самый прикол, что подобное есть еще с формами на битриксе, но тут прямо очень явно проявляется. Возможно кто-то из спецов подскажет нам..
@ibred Не я один такой оказался. Я постарался объяснить, что именно вы не так сделали. Уделите еще минуту, если будет время.. Может ваш опыт решит это быстрее нас)
 

ebrwebrw

Client
Регистрация
20.08.2018
Сообщения
221
Благодарностей
163
Баллы
43
Через Emulator.SendKey работает
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
Спасибо что подтвердили. Самый прикол, что подобное есть еще с формами на битриксе, но тут прямо очень явно проявляется. Возможно кто-то из спецов подскажет нам..
@ibred Не я один такой оказался. Я постарался объяснить, что именно вы не так сделали. Уделите еще минуту, если будет время.. Может ваш опыт решит это быстрее нас)
Зарепортил баг.

Пока что можно использовать такой сниппет:
C#:
string number = project.Variables["phone"].Value; // Например: 9252552242

Dictionary<int, System.Windows.Forms.Keys> keyNum = new Dictionary<int, System.Windows.Forms.Keys>(10);
keyNum.Add(0, System.Windows.Forms.Keys.D0);
keyNum.Add(1, System.Windows.Forms.Keys.D1);
keyNum.Add(2, System.Windows.Forms.Keys.D2);
keyNum.Add(3, System.Windows.Forms.Keys.D3);
keyNum.Add(4, System.Windows.Forms.Keys.D4);
keyNum.Add(5, System.Windows.Forms.Keys.D5);
keyNum.Add(6, System.Windows.Forms.Keys.D6);
keyNum.Add(7, System.Windows.Forms.Keys.D7);
keyNum.Add(8, System.Windows.Forms.Keys.D8);
keyNum.Add(9, System.Windows.Forms.Keys.D9);

foreach (char c in number) {
    var key = keyNum[int.Parse(c.ToString())];
    Emulator.SendKey(instance.ActiveTab.Handle, key, KeyboardEvent.Down);
}
P.S. Возможно, что код не соответствует эталону т.к. я не программист, но со своей задачей он справляется.
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: Sergodjan, Dexio и backoff

Dexio

Client
Регистрация
09.05.2014
Сообщения
1 254
Благодарностей
220
Баллы
63
Зарепортил баг.
Это прямо баг-баг и разработчики возможно пофиксят?(Как-то реально для человека, которому очень важно, напрмер мне, отследить когда именно бак пофиксили?)

Пока что можно использовать такой сниппет:
Гениальный вы человек, спасибо большое за такое быстрое и РАБОЧЕЕ решение!! весь день мучался с классами и обманом js кода, даже на апи уже часть написал, но апи оч много допов требует, а мне не надо такой масштаб. Очень круто.

Вопрос- Вы гениально ищете кнопку по Xpath необычным сниппетом. Вы его готовый взяли или сами написали? Где про подобные лайфхаки можно прочитать мб кратко?

Последний вопрос)- Это все в один поток только работать будет?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)