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

Dexio

Client
Joined
May 9, 2014
Messages
1,251
Reaction score
219
Points
63
Добрый день. Уже не на первом сайте сталкиваюсь, что не могу заполнить форму, из-за того, что эмуляция клавиатуры использует непонятный метод для меня. При заполнении формы ломаются и символы порой даже дублируются. Хотя с клавиатуры нормально.


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



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


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

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

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
113

backoff

Client
Joined
Apr 20, 2015
Messages
6,347
Reaction score
6,635
Points
113
я обычно делаю так
  1. клик или фокус на поле ввода
  2. эмуляция кнопки END переброс каретки в самый конец строки
  3. 10-20 эмуляций бекспейс (удаления символов) ну или сколько надо, обычно делаю в 1,5-2 раза больше чем изначальное число символов, на всякий случай :-)
  4. потом эмуляция того что надо )
всегда работает )
ну или юзай xPath отличная вещь
 

Dexio

Client
Joined
May 9, 2014
Messages
1,251
Reaction score
219
Points
63
всегда работает )
Спасибо,я походу ваши посты ранее и читал и по этой логике пытаюсь повторить, но не работает. Посмотрите пожалуйста, вот пример формы, https://drive.google.com/open?id=17JLbTYBy6TL-oEvWkj6TeKoDhvX_Ucs5
заполняю сначала через SET value, но потом не отправляется, я танцую тоже и с backspace и другими и всеравно не отправляется, только форма ломается
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,347
Reaction score
6,635
Points
113

Dexio

Client
Joined
May 9, 2014
Messages
1,251
Reaction score
219
Points
63
я хз, у меня открывается вот так
Там справа вверху кнопка скачать была, но я вам тут залил, вот, гляньте пожалуйста
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,347
Reaction score
6,635
Points
113
да, понял что вы имеете ввиду. проблема странная, даже самому интересно стало, пока выхода через браузер не вижу
 

Dexio

Client
Joined
May 9, 2014
Messages
1,251
Reaction score
219
Points
63
да, понял что вы имеете ввиду. проблема странная, даже самому интересно стало, пока выхода через браузер не вижу
Спасибо что подтвердили. Самый прикол, что подобное есть еще с формами на битриксе, но тут прямо очень явно проявляется. Возможно кто-то из спецов подскажет нам..
@ibred Не я один такой оказался. Я постарался объяснить, что именно вы не так сделали. Уделите еще минуту, если будет время.. Может ваш опыт решит это быстрее нас)
 

ebrwebrw

Client
Joined
Aug 20, 2018
Messages
221
Reaction score
164
Points
43
Через Emulator.SendKey работает
 

ibred

Client
Joined
Apr 4, 2015
Messages
3,835
Reaction score
3,564
Points
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. Возможно, что код не соответствует эталону т.к. я не программист, но со своей задачей он справляется.
 

Attachments

Last edited:

Dexio

Client
Joined
May 9, 2014
Messages
1,251
Reaction score
219
Points
63
Зарепортил баг.
Это прямо баг-баг и разработчики возможно пофиксят?(Как-то реально для человека, которому очень важно, напрмер мне, отследить когда именно бак пофиксили?)

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

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

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

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,482
Points
113
  • Thank you
Reactions: Dexio

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)