Перейти к содержимому

Публикации Rumata

65 публикаций создано Rumata (учитываются публикации только с 26 мая 2023)



#52854 Вопрос о лицензии на ТестКомплит

Отправлено автор: Rumata 13 февраля 2008 - 10:56 в SmartBear (AutomatedQA) - Functional Testing

У меня складывается такое впечатление что я один работаю на крякнутой версии :clapping:



#46589 Работа С Excel

Отправлено автор: Rumata 17 сентября 2007 - 04:25 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте.

Мы используем такой код. Простой и удобный.

MSE:= Sys.OleObject('Excel.Application');
   MSE.Workbooks.Open('C:\PurchaseOrder.xls');
   Log.Message(VarToString(MSE.Cells(i,j).value)); // i и j номер строки и столбца.


Где же ты раньше был? :)



#46450 Работа С Excel

Отправлено автор: Rumata 13 сентября 2007 - 06:30 в SmartBear (AutomatedQA) - Functional Testing

Подскажите как можно извлекать значения из ячеек

Например указываешь диапазон в цикле и он тупо переносит значения из Excel в массив например



#46488 Работа С Excel

Отправлено автор: Rumata 13 сентября 2007 - 12:39 в SmartBear (AutomatedQA) - Functional Testing

Вот на скорую руку сделал, может как-то так =)

Set ExcelApp = CreateObject("Excel.Application")        pathFile = "C:\..\.xls"        ExcelApp.Workbooks.Open(pathFile)        Set Ran = ExcelApp.Sheets(1).Range("F9:G12")        ReDim arr(Ran.Cells.Count)        For nRow = 1 To Ran.Rows.Count                Set Row = Ran.Rows(nRow)                For nCell = 1 To Row.Cells.Count                        arr((nRow - 1) * Row.Cells.Count + nCell - 1) = Row.Cells(nCell).value                Next        Next



я забыл сказать я на delphi

если возможно можно на этом языке

я пытался переделать приведённый код, вот что получилось

var
m : array of string;
ExcelApp, Ran : olevariant;
ExcelApp := CreateObject('Excel.Application');
pathFile := "C:\123.xls';
ExcelApp.Workbooks.Open(pathFile)
Ran := ExcelApp.Sheets(1).Range('F9 : G12');
setlength(m, Ran.Rows.Count) // присваиваю массиву длину
For nRow := 1 To Ran.Rows.Count do
begin
Row := Ran.Rows(nRow);
For nCell := 1 To Row.Cells.Count
m[nRow, nCell] := Row.Cells(nCell).value;
end;


но лезут ошибки массивы он чтоли не понимает на объявлении переменных??



#46591 Работа С Командной Строкой

Отправлено автор: Rumata 17 сентября 2007 - 05:23 в SmartBear (AutomatedQA) - Functional Testing

Заменил WriteLine на WriteLine_11 нормально заработало, но возникла другая проблема: мне ведь надо работать с telnet , и если просто ручками вызываешь cmd а потом телнет то сеанс нормально работает но testcomplete видимо воспринимает телнет как другой процесс и не передаёт ему команды которые я пишу , пробовал заменять p.StartInfo.FileName := 'c:\Windows\System32\cmd.exe'; на p.StartInfo.FileName := 'c:\Windows\System32\telnet.exe'; но тогда вообще логи пустые, мелькнёт окошко и всё
Как можно это обойти? или телнету нельзя так же команты передавать и читать как cmd ?



#46618 Работа С Командной Строкой

Отправлено автор: Rumata 17 сентября 2007 - 10:46 в SmartBear (AutomatedQA) - Functional Testing

Вспомнил я ведь правда убрал "TestComplete 3 Compatibility"
Вот код процедуры всё также

procedure com;
var
p, input, output;
begin
p := dotNET.System_Diagnostics.Process.zctor();
p.StartInfo.FileName := 'C:\WINDOWS\system32\telnet.exe';
p.StartInfo.UseShellExecute := False;
p.StartInfo.RedirectStandardOutput := True;
p.StartInfo.RedirectStandardInput := True;
p.Start;
input := p.StandardInput;
output := p.StandardOutput;
input.WriteLine_11('?');
while not p.HasExited do
Delay(100);
while not output.EndOfStream do
Log.Message(output.ReadLine());

end;


окошко мелькает и исчезает, хотя cmd хотя бы на экране остаётся, поучается что запуск идёт неправильно может дело в dll System_Diagnostics ведь у нёё название содержит смысл "Диагностика" что как то с telnet -ом не вяжется???
вообщем я завяз и думаю может написать на Delphi элементарнейший клиент и из него уже таскать данные???



#46419 Работа С Командной Строкой

Отправлено автор: Rumata 12 сентября 2007 - 12:27 в SmartBear (AutomatedQA) - Functional Testing

Использую TectComplete 5.12.454.7
Тестируемая программа написана на java
язык скрипта Delphi

Тут возникла необходимость получить данные которые выводяться в командню строку, кто нить знает как это сделать???
Я пытался сделать кодом Delphi который нашел в инете:


procedure com;
var ProcInfo: TProcessInformation;
StartupInfo: TStartupInfo;
SecAtrtrs: TSecurityAttributes;
hOut: THandle;
begin
with SecAtrtrs do
begin
nLength := SizeOf(TSecurityAttributes);
lpSecurityDescriptor := nil;
bInheritHandle := true; // ВОТ ОНО !!! Наша рукоятка будет НАСЛЕДУЕМОЙ
end;

// Создаем файл в который и будем переназначать StdOut
// Например, с такими настройками, вы можете их изменить под свои нужды
hOut := CreateFile('c:\MyStdOut.txt', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if (hOut = INVALID_HANDLE_VALUE) then RaiseLastWin32Error;

GetStartupInfo(StartupInfo);
with StartupInfo do
begin
wShowWindow := SW_HIDE; // не показывать окно
dwFlags := dwFlags or STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
hStdOutput := hOutDup; // присваиваем рукоятку на свой файл
end;

// для примера будем запускать [c:\program files\Borland\Delphi5\Bin]grep.exe с ключом '?'
// Вызов CreateProcess с флагом bInheritHandles = TRUE !!!
Win32Check(CreateProcess(nil, 'ipconfig /all', nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, StartupInfo, ProcInfo));

// ждем пока наш процесс отработает
WaitForSingleObject(ProcInfo.hProcess, INFINITE);

Win32Check(CloseHandle(ProcInfo.hProcess));

//если вы больше ничего не хотите делать с файлом, в который перенаправили StdOut, то закроем его
Win32Check(CloseHandle(hOut));
end;


но testcomplet при компиляции даёт ошибку, хотя в редакторе ошибки не идентифицируются
Если кто делал что нить подобное напишите пожалуста



#46449 Работа С Командной Строкой

Отправлено автор: Rumata 13 сентября 2007 - 06:13 в SmartBear (AutomatedQA) - Functional Testing

Заменил в коде строку p := dotNET.System_Diagnostics.Process.zctor(); на p := dotNET.System.System_Diagnostics_Process.ctor();
и вроде всё заработало только вот я не пойму как организовать такое действие:
Я запускаю cmd через testcomplete и данные тоже ввожу только им а вот полученыы результат уже и выводить
мне надо не одну не две команды написать , нужно организовать целую серию запросов-ответов



#46445 Работа С Командной Строкой

Отправлено автор: Rumata 13 сентября 2007 - 05:26 в SmartBear (AutomatedQA) - Functional Testing

А не проще работать с файлом после вывода?

с помощью добавления к консоли ">имяф_файла" - вывод будет направлен в файл.
Хотя скорее всего я просто не до конца вник в текст


Не проще т.к. команды пишу unuix серверу а он их не поймёт



#46448 Работа С Командной Строкой

Отправлено автор: Rumata 13 сентября 2007 - 05:44 в SmartBear (AutomatedQA) - Functional Testing

я тут нашёл ещё...
так не пойдёт заменить ту строку??
p := dotNET.System.System_Diagnostics_Process.ctor();



#46588 Работа С Командной Строкой

Отправлено автор: Rumata 17 сентября 2007 - 04:21 в SmartBear (AutomatedQA) - Functional Testing

Dmitry N, начал пытаться реализовать вашу процедуру, так у меня при компиляции ругается на input.WriteLine('ver'); пишет что происходит несовпадение типов, а там ведь и правда не получиться так сделать.
Кстати интересный факт теперь у меня ваша строка p := dotNET.System_Diagnostics.Process.zctor();, работает, а моя(которая ещё в пятницу отрабатывала) p := dotNET.System.System_Diagnostics_Process.ctor(); не хотит :)



#46447 Работа С Командной Строкой

Отправлено автор: Rumata 13 сентября 2007 - 05:33 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте.



Можете использовать ClrBridge, чтобы сделать это через .NET. Вот так:

procedure Test;
var
  p, output;
begin
  p := dotNET.System_Diagnostics.Process.zctor();
  p.StartInfo.FileName := 'c:\Windows\System32\cmd.exe';
  p.StartInfo.Arguments := '/c ipconfig';
  p.StartInfo.UseShellExecute := False;
  p.StartInfo.RedirectStandardOutput := True;
  p.Start;
  
  while not p.HasExited do Delay(100);
  output := p.StandardOutput.ReadToEnd();
  Log.Message(output);
end;



Чтобы этот код заработал, надо добавить ассемблю System.dll в ваш проект TestComplete'а. Для этого дважды щёлкните на имени проекта в Project Explorer, откройте страницу Properties редактора проекта и в опциях 'CLR Bridge' нажмите 'Browse GAC...'.


Спасибо большое за ответ.
Но у меня правда чего не получается:
Поставил себе .NET Framework 3.0
Сделал переконфигурацию testcomplete
потом всё так как вы написали , но он ругается что не знает такого "System_Diagnostics" до этого ругался на "dotNET", я уже внёс в список всё dll какие только были, значиться у меня её нет? как можно её найти?
Подскажите пожалуста



#57727 кодировка текста писем

Отправлено автор: Rumata 25 июня 2008 - 11:30 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте!

тут вот такая чтука делаеться...
отправляю письмо а его текст в кракозябре, причём OUTLOOK тему нормально распознаёт
кракозябрами только текст письма
пробовал сохранять исходники скрипта в ANSI и UTF8, и всё равно такаяже картина :(
подскажите как это можно решить
вот сама процедура:
function SendEmail(mFrom, mTo, mSubject, mBody, mAttach);
var
  i, schema, mConfig, mMessage : OleVariant;
begin
  
  try
	schema := 'http://schemas.microsoft.com/cdo/configuration/';
	mConfig := Sys.OleObject('CDO.Configuration');
	mConfig.Fields.Item(schema + 'sendusing') := 2; // cdoSendUsingPort
	mConfig.Fields.Item(schema + 'smtpserver') := 'бла.бла.бла'; // SMTP server
	mConfig.Fields.Item(schema + 'smtpserverport') := 25; // Port number
	// mConfig.Fields.Item(schema + 'sendusername') := ''; // User name (if needed)
	// mConfig.Fields.Item(schema + 'sendpassword') := ''; // User password (if needed)
	mConfig.Fields.Update();
	
  
	mMessage := Sys.OleObject('CDO.Message');
	mMessage.Configuration := mConfig;
	mMessage.From := mFrom;
	mMessage.To := mTo;
	mMessage.Subject := mSubject;
	mMessage.HTMLBody := mBody;
	for i := 0 to GetCSVCount(mAttach) - 1 do
	  mMessage.AddAttachment(GetCSVItem(mAttach, i));
	mMessage.Send();
	Log.Message('Сообщение отправленно!', 'Адресат - '+mTo, pmNormal, debug_attr );
	Result := True;
  except
	Log.Message('Сообщение не отправленно!', '', pmNormal, error_attr );
	Result := False;
  end;
end;



#57769 кодировка текста писем

Отправлено автор: Rumata 26 июня 2008 - 04:15 в SmartBear (AutomatedQA) - Functional Testing

modbear, спасибо помогло

serpent , правильно мой косяк :) я правда переделал чтоб тело письма было текстовое, т.к. мне это не критично. Ради интереса попробовал передавать хтмл, но максимум чего добился так это,то что если ставлю кои8р в кодировке у меня когда письмо приходит во всплывающей подсказке текст читабельный, а при открытии он опять кракозябрами :(
вот я решил не заморачиваться и передавать "текстовое тело" письма :)



#47268 Проверка на наличие процесса

Отправлено автор: Rumata 03 октября 2007 - 09:24 в SmartBear (AutomatedQA) - Functional Testing

чегото у меня не работает и зачем нужна 1000 в ('DefaultListCellRenderer$UIResource', logName, 0, 1000); ???
не может найти объект


Здравствуйте.



Как я понимаю, вам надо проверить существование объекта в приложении, а не процесса. Сделать это можно с помощью метода WaitSwingObject.

logName := '20070918.log.gz';
  w1 := Sys.Process('javaw').SwingObject('JDialog', 'Окно архивирования лог файла', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('LogArchivePanel', '', 0).SwingObject('JPanel', '', 0).SwingObject('JScrollPane', '', 0).SwingObject('JViewport', '', 0).SwingObject('JList', '', 0).AWTObject('CellRendererPane', '', 0);
  w2 := w1.WaitSwingObject('DefaultListCellRenderer$UIResource', logName, 0, 1000);
  if w2.Exists then
	Log.Message('Log file is found')
  else
	Log.Error('Log file is not found');




#47358 Проверка на наличие процесса

Отправлено автор: Rumata 05 октября 2007 - 04:51 в SmartBear (AutomatedQA) - Functional Testing

Я сам разобрался, нужно было использовать WaitWindow вместо WaitSwingObject



#47254 Проверка на наличие процесса

Отправлено автор: Rumata 03 октября 2007 - 05:30 в SmartBear (AutomatedQA) - Functional Testing

Привет Всем!
помогите плиз вопрос возник

TestComplete 5.12.474.7
delphiscript
приложение на Java

У меня есть процесс:
Sys.Process('javaw').SwingObject('JDialog', 'Окно архивирования лог файла', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('LogArchivePanel', '', 0).SwingObject('JPanel', '', 0).SwingObject('JScrollPane', '', 0).SwingObject('JViewport', '', 0).SwingObject('JList', '', 0).AWTObject('CellRendererPane', '', 0).SwingObject('DefaultListCellRenderer$UIResource', '20070918.log.gz', 0)


в конце имя лог файла 20070918.log.gz и оно меняется

мне нужно подставлять в цикле вместо этого имени значение строковой переменной и проверять наличие этого процесса
если его нет то я провожу действие в тестируемом приложении(перехожу на другую запись в списке) в результате которого меняется имя лог-файла в процесе(который реально существует) и опять проверяю наличие моего процесса ; если есть то делаю определённое действие

вопрос : как сделать проверить существование процесса в имени которого можно динамически менять параметр



#47357 Проверка на наличие процесса

Отправлено автор: Rumata 05 октября 2007 - 04:30 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте.



Прежде всего хочу заметить, что в TestComplete замечательная справочная система. Задокументировано практически все, и при этом очень доступно и с примерами. Это к вопросу о 1000 в вызове метода WaitSwingObject.



А по поводу невозможности найти объект, в скрипте упоминается 12 объектов -- возможно не находится какой-нибудь другой объект. Запостите сюда сообщение об ошибке вместе с содержимым панели Remarks.


Сейчас невозможно показать поиск потому же объекту что я приводил в начале, поэтому я покажу аналогичный пример.
Здесь он просто переходит по ветке ELSE и выводит в лог "нет"

fff : string;
xx, xxx : olevariant;


Sys.Process('TOTALCMD').Window('TTOTAL_CMD', 'Total Commander 6.03a - ISS GmbH Heidelberg', 1).refresh;
sleep(500);
xx := Sys.Process('TOTALCMD').Window('TTOTAL_CMD', 'Total Commander 6.03a - ISS GmbH Heidelberg', 1).Window('TMyPanel', '', 2);
fff := '[_нет_] 15 122 276 КБ из 61 440 560 КБ свободно';
xxx := xx.WaitSwingObject('TMyPanel', fff, 1, 1000);
if xxx.exists then
log.message('есть')
else
log.message('нет');



Параллельно проверял кодом

if Sys.Process('TOTALCMD').Window('TTOTAL_CMD', 'Total Commander 6.03a - ISS GmbH Heidelberg', 1).Window('TMyPanel', '', 2).Window('TMyPanel', '[_нет_] 15 122 276 КБ из 61 440 560 КБ свободно', 1).exists then
log.message('есть 1')
else
log.message('нет 1');

и процесс нормально обнаруживается



#50551 некорректный ввод данных

Отправлено автор: Rumata 14 декабря 2007 - 10:45 в SmartBear (AutomatedQA) - Functional Testing

Использую
TC 5.12
delphiscript
тестируется веб интерфейс

Так вот ситуёвина такая у меня переменняя в которой записанно 1q2w!Q@W это пароль, когда я его ввожу в поле ввода пароля, восклицательный знак не вводиться, вводиться только 7 символов.

Кто-нить знает почему такое может быть, вручную всё вводится нормально



#52837 Форматированный вывод логов + сохранение лога

Отправлено автор: Rumata 13 февраля 2008 - 06:04 в SmartBear (AutomatedQA) - Functional Testing

На счет - удаления файла попробуйте установить небольшую задержку после удаления( у меня на разных компах с разной скоростью удаляются файлы - "не моментально") - Builtin.Delay(300); - файл логов обычно большой может дольше удаляться.И только после задержки создавайте файл.


дело не в паузе у меня видимо в прошлый раз когда я пытался сохранить был ТС неправильно настроен, сейчас всё нормально работает и даже архивирует логи



#52831 Форматированный вывод логов + сохранение лога

Отправлено автор: Rumata 13 февраля 2008 - 04:44 в SmartBear (AutomatedQA) - Functional Testing

забыл, я пытался файл удалить Utilities.DeleteFile(FileName);, но видимо ТС файл не освобождал и он не удалялся :(



#52830 Форматированный вывод логов + сохранение лога

Отправлено автор: Rumata 13 февраля 2008 - 04:37 в SmartBear (AutomatedQA) - Functional Testing

Delphiscript

Здравствуйте!

Подскажите пожалуйста можно ли в лог выводить форматированные данные (жирный шрифт, курсив, цвет)?

И еще как можно сохранить данные лога в файл так чтоб TC не спрашивал "перезаписать файл?"

пробовал так:
procedure ExportResults;
var FileName : OleVariant;
begin
FileName := Project.ConfigPath + 'Log\MyResults.mht';
Log.SaveResultsAs(FileName, 2);
end;



#52835 Форматированный вывод логов + сохранение лога

Отправлено автор: Rumata 13 февраля 2008 - 05:28 в SmartBear (AutomatedQA) - Functional Testing

у меня теперь тоже работает, хотя раньше с Utilities.DeleteFile не получалось



#48860 Работа с Уникодами

Отправлено автор: Rumata 13 ноября 2007 - 04:31 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте.

Вы можете задать для проекта формат хранения скриптов UFT-16. Двойным щелчком по проекту в панели Project Explorer открываете редактор проекта, переходите на закладку Properties и меняете значение свойства 'Character Encoding' в группе опций General.

Также читайте раздел справки 'Support for Unicode'. В нём описано как TestComplete может работать с Unicode.


Спасибо теперь после пересохранения символы остаются, но в helpe ссылки на форум а тама я чего то запутался, поэтому ничего так и выяснил :(



#48829 Работа с Уникодами

Отправлено автор: Rumata 12 ноября 2007 - 10:37 в SmartBear (AutomatedQA) - Functional Testing

Delphiscript
TC 5.12
Здравствуйте!
Возникла необходимость в тестовых случаях вводить буквы казахского шрифта, в системе он предустановлен.
В TC буквы алфавита вводятся нормально, но после сохранения от букв остаются одни вопросики :(
Тогда я сохранил набор символов в файле(.txt, кодировка UTF-8) и подтягиваю во время выполнения скрипта данные из него в переменную, но в лог опять же выводиться совсем не то да и в тестируемое приложение неизвестно что попадёт.
Подскажите пожайлуста как можно обойти эту проблему.