Перед любым, кто использует HP QuickTest Professional, рано или поздно может встать проблема копирования содержимого большого текстового файла, например, содержащего приличный по объему XML-запрос, в какое-либо поле тестируемого приложения, опять же, например, в поле отправки запроса. Камнем преткновения оказывается или длительность процесса считывания и переноса содержимого файла в поле приложения, или невозможность использовать метод SendKeys ввиду того, что он слишком часто не срабатывает в тех случаях, когда автотест выполняется на системе, не отображаемой на вашем мониторе непосредственно в момент выполнения.
Я решил поделиться собственным успешным опытом решения этой, пусть и небольшой, но иногда необходимой для полноценного автоматизированного тестирования задачи.

1. Копирование содержимого файла в системный буфер обмена:

set ws = CreateObject("WScript.Shell")
ws.Run "cmd /c type [полное_имя_файла] | clip"


2. Вставка содержимого буфера в поле приложения:

'Нажатие клавиши V с зажатой клавишей Ctrl
Определение_поля_приложения_в_Object_Repository.PressKey "V", micCtrl 


Проблемы, которые могут возникнуть при используемом подходе:
— несоответствие кодировок
— несрабатывание команды из пункта 1 с первого раза

Проблему несоответствия кодировок я решил с помощью BAT-файла следующего содержания:

chcp номер_кодировки
(если в содержимом файла встречаются символы Кириллицы, подойдет 1251)
type %1 | clip

Команда копирования содержимого файла в буфер обмена, конечно, тоже видоизменится, теперь она запускает этот BAT-файл, передавая ему в качестве параметра %1 имя файла:

ws.Run "[cmd /c полное_имя_BAT'ника] [полное_имя_копируемого_файла]"


Проблему несрабатывания команды с первого раза я решил так же, в лоб, потому что в моем случае ввиду объемов копируемых файлов она с первого раза не срабатывает никогда. ОС, кстати: Windows Server 2008 R2

For i = 1 to 2
ws.Run "cmd /c [полное_имя_BAT'ника] [полное_имя_копируемого_файла]"
Wait (2)
Next


Ниже показано, как BAT-файл и весь кусок кода выглядят с определенными для примера параметрами:

BAT-файл (C:\CopyToCB.bat):

chcp 1251
type %1 | clip


Кусок кода:

set ws = CreateObject("WScript.Shell")

For i = 1 to 2
ws.Run "cmd /c C:\CopyToCB.bat C:\test.txt"
Wait (2)
Next

JavaWindow("soapUI 4.5.0").JavaInternalFrame("Request 1").JavaEdit("Request").PressKey "V", micCtrl