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

slava1975

Client
Регистрация
12.09.2016
Сообщения
306
Благодарностей
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 ( переменная текст),так же массивные тексты прописываются не полностью либо очень при очень долго)
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
1 036
Благодарностей
559
Баллы
113
Так и будет с буфером. Найди альтернативное решение, например вставка сразу из переменной в форму
 

slava1975

Client
Регистрация
12.09.2016
Сообщения
306
Благодарностей
34
Баллы
28
Так и будет с буфером. Найди альтернативное решение, например вставка сразу из переменной в форму
Спасибо за ответ, но я написал что чаще всего массивный текст не вставляется &полностью, и это реально долго если текст размером на А4, текст из переменной сразу в форму вводится по символьно
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
1 036
Благодарностей
559
Баллы
113
Вставить текст можно не стандартным способом. Но никак не через буфер - это ужасное решение (проверено).
В лс покажи что за сайт.
 

slava1975

Client
Регистрация
12.09.2016
Сообщения
306
Благодарностей
34
Баллы
28
Отправил вам кусок кода
 

slava1975

Client
Регистрация
12.09.2016
Сообщения
306
Благодарностей
34
Баллы
28
Вставить текст можно не стандартным способом. Но никак не через буфер - это ужасное решение (проверено).
В лс покажи что за сайт.
ох как я жду машего ответа
 

nexx1

Client
Регистрация
16.08.2016
Сообщения
284
Благодарностей
101
Баллы
43
люди добрые помогите кто чем может,столкнулся с проблемой,вставка массивного текста в поле для ввода...
попробуйте напрямую вставить из переменной, как-то так:
C#:
string largeText = project.Variables["МояПеременнаяСТекстом"].Value;
HtmlElement textarea = instance.ActiveTab.FindElementByXPath("//textarea", 0);
textarea.SetValue(largeText);
 

slava1975

Client
Регистрация
12.09.2016
Сообщения
306
Благодарностей
34
Баллы
28
попробуйте напрямую вставить из переменной, как-то так:
C#:
string largeText = project.Variables["МояПеременнаяСТекстом"].Value;
HtmlElement textarea = instance.ActiveTab.FindElementByXPath("//textarea", 0);
textarea.SetValue(largeText);
128951 не сработало
 

nexx1

Client
Регистрация
16.08.2016
Сообщения
284
Благодарностей
101
Баллы
43
Последнее редактирование:

slava1975

Client
Регистрация
12.09.2016
Сообщения
306
Благодарностей
34
Баллы
28

kagorec

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

Не используйте буффер!)
 
  • Спасибо
Реакции: KokaSEO

KokaSEO

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

Не используйте буффер!)
Все гениальное просто.
Решал сейчас такую же задачу и уже начал гуглить, как вставить из буфера, но вовремя наткнулся на это сообщение, которое все решило. Спасибо.
 
  • Спасибо
Реакции: kagorec

Voldemar

Client
Регистрация
13.04.2014
Сообщения
535
Благодарностей
62
Баллы
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 ( переменная текст),так же массивные тексты прописываются не полностью либо очень при очень долго)
Кое где, все же хочется вставить из буфера, изредка вот такая ошибка вылетает (но при этом текст вставляет) "

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

Что, почему?:
 

dihard

Client
Регистрация
08.11.2019
Сообщения
318
Благодарностей
51
Баллы
28
Кое где, все же хочется вставить из буфера, изредка вот такая ошибка вылетает (но при этом текст вставляет) "

"Выполнение действия 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)