Добавление действий заполнение текстового поля формы, как решить?

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
Речь идет о форме в YouTube - описание к видео

1. Есть форма в нее надо вводить текст
2. Добавляем действие через конструктор
3. Далее в кубике есть настройка эмуляции в вкладке дополнительно (см. скриншоты Variant-1)

4. Если ставим Эмуляция-Своя-Максимальная скорость, то ввод происходит мгновенно, НО не появляется кнопка сохранить в форме, т.е не получается засабмитить форму, как бы не понимает (см. скриншоты Variant-1-Error)

5. Если ставим Эмуляция-Своя-По умолчания, то долго (ну да ладно), НО в текст, который написан непрерывно вставляет пустый строки, то есть

ТЕКСТ ОРИГИНАЛ
Текст1
Текст2
Текст3

ТЕКСТ под воздействием (Эмуляция-Своя-По умолчания)
Текст1

Текст2

Текст3

Как решить данный проблемы?
 

Вложения

Ахилес

Client
Регистрация
11.11.2020
Сообщения
858
Благодарностей
348
Баллы
63
там 4 уровня эмуляции.... почему бы не попробовать все, а не только 2 ?
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
попробуй после эмуляции ввода текста - отправить клик мышкой в поле ввода
 

invergo

Client
Регистрация
17.02.2016
Сообщения
46
Благодарностей
20
Баллы
8
Попробуй вставить текст из буфера обмена
C#:
lock(SyncObjects.InputSyncer) // блокировка
{
    var descr = project.Variables["content"].Value;

    // сохраняем предыдущее состояние буфера
    String previous_text = null;
    previous_text = System.Windows.Forms.Clipboard.GetText();

    // сохраняем нужный текст в буфер и вставляем его (программно делаем CTRL+V)
    System.Windows.Forms.Clipboard.SetText(descr);
    instance.ActiveTab.KeyEvent("v","press","ctrl");

    // стираем буфер и возвращаем его к первоначальному состоянию
    System.Windows.Forms.Clipboard.Clear();
    System.Windows.Forms.Clipboard.SetText(previous_text);
}
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
923
Благодарностей
476
Баллы
63
Через xpath навести на форму ввода описания, выбрать `Rise` как `focus`, и следующий кубик `touch`
Через буфер обмена вставить текст
Кубик Javascript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

// Проверим, что элемент найден
if (targetElement) {
  // Текст для вставки
  var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом

  // Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
  // Создаем событие keydown для Ctrl
  var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });

  // Создаем событие keydown для V
  var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });

  // Создаем событие keyup для Ctrl
  var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });

  // Создаем событие keyup для V
  var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });

  // Диспетчеризируем события
  targetElement.dispatchEvent(ctrlKeyDownEvent);
  targetElement.dispatchEvent(vKeyDownEvent);

  // Вставляем текст в элемент
  targetElement.value = textToPaste; // Если элемент - это input или textarea

  targetElement.dispatchEvent(vKeyUpEvent);
  targetElement.dispatchEvent(ctrlKeyUpEvent);
}
п.с. в первом посте все 5 пунктов лишние
 
Последнее редактирование:

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
попробуй после эмуляции ввода текста - отправить клик мышкой в поле ввода
Да, так делал, не получается там надо пробел или что-то ввести и тогда станет активна кнопка, НО при новом вводе старое стирается
 

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
Попробуй вставить текст из буфера обмена
C#:
lock(SyncObjects.InputSyncer) // блокировка
{
    var descr = project.Variables["content"].Value;

    // сохраняем предыдущее состояние буфера
    String previous_text = null;
    previous_text = System.Windows.Forms.Clipboard.GetText();

    // сохраняем нужный текст в буфер и вставляем его (программно делаем CTRL+V)
    System.Windows.Forms.Clipboard.SetText(descr);
    instance.ActiveTab.KeyEvent("v","press","ctrl");

    // стираем буфер и возвращаем его к первоначальному состоянию
    System.Windows.Forms.Clipboard.Clear();
    System.Windows.Forms.Clipboard.SetText(previous_text);
}
Работает, но коряво - иногда вставляет текст из буфера, а иногда просто пустота вставляется, причем закономерность пока не понял....
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
попробуйте экшеном эмуляцией клавиатуры после клика в поле, а не ввод текста в поле подменой value
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
858
Благодарностей
348
Баллы
63
Работает, но коряво - иногда вставляет текст из буфера, а иногда просто пустота вставляется, причем закономерность пока не понял....
закономерность тут одна... буфер обмена не предназначен для работы в многопотоке... он и в один поток может сбой дать... а все потому что установка данных в него не гарантируется майкрософтом :bn:
да и другие желающие могут просто его затереть.
 

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
попробуйте экшеном эмуляцией клавиатуры после клика в поле, а не ввод текста в поле подменой value
Более менее помогло, логика такая

1. Фокусом ставим курсор в начало
2. Эмуляция делаем перевод (т.е вставляем пустую строку)
3. Появляется сохранить, сохраняем, после чего Утюб сам вырезает первую пустую строку
 

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
закономерность тут одна... буфер обмена не предназначен для работы в многопотоке... он и в один поток может сбой дать... а все потому что установка данных в него не гарантируется майкрософтом :bn:
да и другие желающие могут просто его затереть.
Я в один поток запускал, мало того не трогал ничего, чтобы работало, но всеравно крайне коряво
 

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
По существу работает, но после примерно 100 итерации зависает браузер и перестает открывать, приходится весь профиль перезагружать...
 

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