вставка текста

  • Автор темы Автор темы slava1975
  • Дата начала Дата начала

slava1975

Client
Регистрация
12.09.2016
Сообщения
307
Реакции
34
Баллы
28
люди добрые помогите кто чем может,столкнулся с проблемой,вставка массивного текста в поле для ввода: если использовать код :
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);
}
,в несколько потоков или паралельный шаблон с подобной вставкой текста ,приводят к полной путаннице,в один шаблон может вставится текст из другого шаблона
помогите как еще решить эту прпоблему? просто эмуляцией клавиатуры не решить,текст может не полностью пропечатываться,кто сталкивался с подобной проблемой? очень надо,помогите!!!!!!
Через конструктор действий через set ( переменная текст),так же массивные тексты прописываются не полностью либо очень при очень долго)
 
Так и будет с буфером. Найди альтернативное решение, например вставка сразу из переменной в форму
Спасибо за ответ, но я написал что чаще всего массивный текст не вставляется &полностью, и это реально долго если текст размером на А4, текст из переменной сразу в форму вводится по символьно
 
Вставить текст можно не стандартным способом. Но никак не через буфер - это ужасное решение (проверено).
В лс покажи что за сайт.
 
Отправил вам кусок кода
 
люди добрые помогите кто чем может,столкнулся с проблемой,вставка массивного текста в поле для ввода...
попробуйте напрямую вставить из переменной, как-то так:
C#:
Развернуть Свернуть Копировать
string largeText = project.Variables["МояПеременнаяСТекстом"].Value;
HtmlElement textarea = instance.ActiveTab.FindElementByXPath("//textarea", 0);
textarea.SetValue(largeText);
 
попробуйте напрямую вставить из переменной, как-то так:
C#:
Развернуть Свернуть Копировать
string largeText = project.Variables["МояПеременнаяСТекстом"].Value;
HtmlElement textarea = instance.ActiveTab.FindElementByXPath("//textarea", 0);
textarea.SetValue(largeText);
128951 не сработало
 
Последнее редактирование:
Вообщем ТС предоставил в лс свой секретный шаблон.
Где впринципе нужно было заполнить textarea, а после стандартного заполнения через Set "value" кнопка "отправить" уже становилась неактивной (скорее всего изза этого был выбран альтернативный вариант заполнения через буффер) что поправимо фокусом по textarea с последующей эмуляцией клавиатуры (чтото дополнительно напечатать например пробел) и кнопка "отправить" становится активна. Всё!

Не используйте буффер!)
 
  • Спасибо
Реакции: KokaSEO
Вообщем ТС предоставил в лс свой секретный шаблон.
Где впринципе нужно было заполнить textarea, а после стандартного заполнения через Set "value" кнопка "отправить" уже становилась неактивной (скорее всего изза этого был выбран альтернативный вариант заполнения через буффер) что поправимо фокусом по textarea с последующей эмуляцией клавиатуры (чтото дополнительно напечатать например пробел) и кнопка "отправить" становится активна. Всё!

Не используйте буффер!)
Все гениальное просто.
Решал сейчас такую же задачу и уже начал гуглить, как вставить из буфера, но вовремя наткнулся на это сообщение, которое все решило. Спасибо.
 
  • Спасибо
Реакции: kagorec
люди добрые помогите кто чем может,столкнулся с проблемой,вставка массивного текста в поле для ввода: если использовать код :
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);
}
,в несколько потоков или паралельный шаблон с подобной вставкой текста ,приводят к полной путаннице,в один шаблон может вставится текст из другого шаблона
помогите как еще решить эту прпоблему? просто эмуляцией клавиатуры не решить,текст может не полностью пропечатываться,кто сталкивался с подобной проблемой? очень надо,помогите!!!!!!
Через конструктор действий через set ( переменная текст),так же массивные тексты прописываются не полностью либо очень при очень долго)
Кое где, все же хочется вставить из буфера, изредка вот такая ошибка вылетает (но при этом текст вставляет) "

"Выполнение действия CSharp OwnCode: вставляем фразу из буфера. Значение не может быть неопределенным.
Имя параметра: text""

Что, почему?:
 
Кое где, все же хочется вставить из буфера, изредка вот такая ошибка вылетает (но при этом текст вставляет) "

"Выполнение действия CSharp OwnCode: вставляем фразу из буфера. Значение не может быть неопределенным.
Имя параметра: text""

Что, почему?:
значение, которое вы пытаетесь вставить в буфер обмена, может быть неопределенным (null). Это может произойти, если переменная descr, получаемая из project.Variables["content"].Value, не содержит значения, надо добавить проверку на null
C#:
Развернуть Свернуть Копировать
lock(SyncObjects.InputSyncer) // блокировка
{
    var descr = project.Variables["content"].Value;

    // Проверяем, что descr не является null или пустой строкой
    if (string.IsNullOrEmpty(descr))
    {
        // действия когда переменная null
    }

    // сохраняем предыдущее состояние буфера
    String 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);
}
 
  • Спасибо
Реакции: Voldemar

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