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

Публикации Rumata

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



#57830 Почему код работает ТАК ?

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

Привет!

А если на потоке ввода взвести свойство AutoFlush? Поток наверняка буферизованый и то что вы в него пишете, скорее всего, какое-то время лежит в буфере.
Например:
Код output.BaseStream.SetLength(100000);

input.AutoFlush := true;

Или вручную дергать метод Flush, после каждой записи в поток.

Возможно, буфер влияет и на поток вывода. Он переполянется и все. Что если у базового потока увеличить длину.
Вот так:
output.BaseStream.SetLength(100000);


не получается

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

Я не совсем понял, а CMD.exe в конце закрывается или нет? Если нет, по попробуйте закрывать его (только корректно) перед попыткой чтения выходного потока.

По поводу необходимости нажатия Enter -- это, наверно, приложение не так отрабатывает нажатия, как CMD. Попробуйте использовать метод Write_10(MyCommand + #13).


смд закрываеться , там ведь есть команда quid
Write_10(MyCommand + #13) не работает

у мня счас немного задача изменилась, необходимый мне вывод данных теперь выводится в файл, так что я только ввожу данные а читаю результат после закрытия цмд из текстового файла.

теперь вот пытаюсь стабилизировать всё что делал...



#57804 Почему код работает ТАК ?

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

вот весь уже скока мучусь, как то криво получается :(((

может кто знает, извлечь данные из цмд?

причем просто перенаправлять не получиться так как я запускаю батник(а он jar-ник) а потом уже общаюсь с ним.

сей час немного прогу переделал, добавил Delay(1000); после каждого writeline, так команды стали выполняться(интересно с какого?) но в выходной поток не все данные пишутся выводит пары десятков строчек лога и всё :(

в чём причина хз

подскажите пожалуста возможные решения



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

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

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

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



#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;



#57711 Почему код работает ТАК ?

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

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

А можно узнать, что такое 'read_name_install_file' и 'PosEnd'?


процедуры

read_name_install_file - возвращает полное имя файла который я запускаю в цмд

PosEnd -
последнее вхождение символа в строку


вот я переделал немного, правда теперь приходиться ентер жать после каждого ввода команды :friends:
procedure Main;
  var 
  dir,f : string;
  k : integer;
  p, input, output,cmd;
  st : boolean;
  s : string;
  ss : widestring;
  begin 
  opred_form_log;
  file_mame_rez_log := 'Install_server_rezult_log.mht';
  ResultDir := 'C:\NAT_EAR_COPY_RESULTS\';
  ArchiveDir := 'C:\artifakts\';   
  p := dotNET.System_Diagnostics.Process.zctor();
  p.StartInfo.FileName := 'c:\Windows\System32\cmd.exe';
  p.StartInfo.UseShellExecute := false;
  p.StartInfo.RedirectStandardOutput := True;
  p.StartInfo.RedirectStandardInput := True;
  p.Start;
  f := read_name_install_file;
  k := PosEnd('\',f);
  dir := copy(f,1,k-1);  // директория запускаемого батника
  f := copy(f,k+1,length(f)-k); // здесь имя батника который запускаю 
  input := p.StandardInput;
  output := p.StandardOutput;
  cmd := Sys.Process('cmd',2).Window('ConsoleWindowClass', '*'); // вторая запущеная цмд
  input.WriteLine_11('cd '+dir); // переход в директорию батника
  input.WriteLine_11(f); // запуск батника
  // теперь идут запросы батника
  input.WriteLine_11('C:\j2sdk1.4.2_12'); // ввод корня  jsd
  cmd.Keys('[Enter]');					  // эмуляция долбанного ентера
  input.WriteLine_11('C:\Sop\jboss-portal-2.6.1.GA');   // ввод корня  jboss-portal-
  cmd.Keys('[Enter]');				// эмуляция долбанного ентера
  input.WriteLine_11('update');	   // выбор сбособа установки
  cmd.Keys('[Enter]');				// эмуляция долбанного ентера
  input.WriteLine_11('127.0.0.1');	// айпи сервера
  cmd.Keys('[Enter]');				// эмуляция долбанного ентера
  input.WriteLine_11('quit');		 //выход
  st := false;
  Log.Message('3');
  while not p.HasExited do // если еще цмд открыто
	Delay(500);
  ss := '';
  Log.Message('4');
  while not output.EndOfStream do
	begin
	if not(st) then
	  if (pos('INFO  [Server] JBoss ',s)<> 0) and (pos('Started in',s)<> 0) then
		st := true;
	s := output.ReadLine();
	ss := ss+#13+s;	
	end;
  Log.Message('Лог запуска сервера', ss, pmNormal, debug_attr );   
  if st then
	Log.Message('Сервер запущен!', '', pmNormal, debug_attr )  
  else
	Log.Message('Сервер не был запущен!', '', pmNormal, error_attr ); 
  ExportResults(ResultDir + file_mame_rez_log);
  add_results_archive(file_mame_rez_log);
  if st then  
	SendEmail(e-mail, e-mail, 'Логи автоинсталлирования сервера', 'На север была успешно произведена установка обновления'+#13+'Логи во вложении', ArchiveName+'.rar')
  else
	SendEmail(e-mail, e-mail, 'Логи автоинсталлирования сервера', 'Установка обновления на север была не удалась'+#13+'Логи во вложении', ArchiveName+'.rar');
  end;



#57687 Почему код работает ТАК ?

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

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

Сейчас делал импорт данных из смд, но столкнулся с проблеммой их вводить :)
так вот данные вводяться прекрасно, пока я незапускаю батник из смд, после данные вводяться как одна строка, но если ввести [Enter], то потом данные опять вводяться в поток нормально, объясните почему такое бывает.

вот процедурина
procedure Main;
   var 
   dir,f : string;
   k : integer;
   p, input, output,cmd;
   begin	
   p := dotNET.System_Diagnostics.Process.zctor();
   p.StartInfo.FileName := 'c:\Windows\System32\cmd.exe';
   p.StartInfo.UseShellExecute := false;
   p.StartInfo.RedirectStandardOutput := True;
   p.StartInfo.RedirectStandardInput := True;
   p.Start;
   f := read_name_install_file;
   k := PosEnd(f);
   dir := copy(f,1,k-1);
   f := copy(f,k+1,length(f)-k);  
   input := p.StandardInput;
   output := p.StandardOutput;
   cmd := Sys.Process('cmd',2).Window('ConsoleWindowClass', '*');
   //cmd.Keys('[Enter]');
   input.WriteLine_11('cd '+dir);
   input.WriteLine_11(f);
   input.WriteLine_11('C:\j2sdk1.4.2_12');
   cmd.Keys('[Enter]'); //без этой строки все команды, начиная с предыдущей, 
		 //объединяються в одну и вводятся как одна
   input.WriteLine_11('C:\Sop\jboss-portal-2.6.1.GA');
   input.WriteLine_11('update');
   input.WriteLine_11('127.0.0.1');
   input.WriteLine_11('quit');
 
   while not p.HasExited do 
	 Delay(1000);
   while not output.EndOfStream do
	 Log.Message(output.ReadLine());
   //dotNET.System_Diagnostics.Process.zctor.
   end;



#55489 доступ к объекту

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

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

Попробуйте использовать метод WaitProperty:

var metka = <metkaObj>;
 
   metka.WaitProperty("Visible", false, 60000);


попробовал, не получаеться...
вот как сделал:
if (Evaluate(tpm_n_obj+'.WaitProperty(''Visible'', true, 60000)'))and(Evaluate(tpm_n_obj+'.WaitProperty(''enabled'', true, 60000)'))and(Evaluate(tpm_n_obj+'.WaitProperty(''exists'', true, 60000)'))then

если выполняеться то я жду секунду и по новой пытаюсь достучаться

условие всегда выполняеться хотя объекта на портлете нет :yahoo:

у меня теты на виртуальной машине, может это влияет, хотя раньше не замечал ни за чем подобном...



#55333 доступ к объекту

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

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

Столкнулся с такой штукой, не знаю что делать:

у мня есть web интерфейс написанный на AJAX
так вот там есть портлет на котором я делаю какие либо действия,
итак, я, например, выбираю некоторый пункт списка, нажимаю "переместить", после этого у меня на на портлете появлеться метка с анимацией "пожалуста ждите".
Я в коде проверяю наличие метки таким способом:
sys.refresh;
delay(zdk);
if (метка.exists)and(метка.visible)and(метка..enabled) then
 бла-бла-бла

так вот начало имени объекта(метки) я изменяю добавив метод "Wait" получаеться sys.wait<остальное имя>

проблема в том что когда объект исчезает с портлета скрипт его видит и не делает то что мне надо!

в браузере объектов я смотрел, и там этот объект исчезает как только отработает...

незнаю что за .....

Кто нить встречался с подобным?



#55235 создание собственных типов

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

спасибо за советы
я нашел способ сделать по другому.
использую параллельно два массива, в первом массиве имя элемента во втором его значение



#55204 создание собственных типов

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

Привет!

Подскажите плиз, есть ли возможность создать свой тип в тест комплите 5.14(delphiscript)

мне например нужен массив типа запись



#53425 Экспорт объектов из "Object Browser"

Отправлено автор: Rumata 03 марта 2008 - 06:09 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте!
Подскажите пожалуйста как можно экспортнуть дерево объектов из объектного браузера ТС 5.14

экспорт в любом формате



#53033 Создание автотеста софта, до того как этот софт появился

Отправлено автор: Rumata 20 февраля 2008 - 03:39 в SmartBear (AutomatedQA) - Functional Testing

http://www.simplytes...rs/Articles.htm


эт конечно всё интересно, но я с английским не особо дружу чтоб литературу на нём читать :)



#53004 Создание автотеста софта, до того как этот софт появился

Отправлено автор: Rumata 19 февраля 2008 - 11:39 в SmartBear (AutomatedQA) - Functional Testing

Привет Всем!

Есть ли у кого интересные идеи по этому вопросу?

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

Предложили мне такую штуку сделать, я сначала сказал что это в принципе не реально :)
Потом подумал и возникла идейка как это можно сделать.
идея вот в чём:
по СТПО(спецификация требований к программ обеспечен) пишется методика испытаний(ПиМИ)
Теперь составляю "файл ассоциации" эта такой файл где пишутся имена(собственно придуманные и удобные для звучания :)) предполагаемых кнопок, меток полей и др.
Потом по ПиМИ я составляю ещё один файл "файл сценария", и в нём пишу сценарий тестирования по ПиМИ.
Этот сценарий состоит из этих самых "имён" и пара десятка зарез. слов
И весь смысл того что в идеале когда придёт софт я только должен буду воткнуть в файле ассоциации напротив каждого придуманного имени, полное имя настоящего объетка на интерфейсе. и будет всё работать.
Данная система у меня более менее работает
НО
я на неё угрохал кучу времени
она на самом деле не такая уж замечательная как казалась вначале
:(
Вообщем я почти полностью разуверился в этой "Идее" и работаю с ней только потому что жаль потраченного времени и в этих скриптах неплохой набор процедур...
в принципе система неплохая, но она не окупает главного - того что автоматизация должна занимать меньше времени чем мануальное тестирование...

вот...

Если есть мысли по данному вопросу и по тому как я попытался это решить, скажите.



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

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

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



#52851 WEB testing

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

Вопрос № 2 :)

При записи тестов все пишеться отлично только вот идет адресация по ячейкам таблиц не веб страницах. страницы такие что места нужных елементов могут меняться. Как можно еще к ним обращаться?


У нас была такая же проблема

Метод Find (даже если бы и помогал) работает так долго что всё преимущество автоматизации убивается
Решения:

1) Писать автотест по строго определённому сценарию, тогда можно хоть как то определить ячейки
2) самый действенный, Просить программистов чтобы они фиксировали имена объектов



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

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

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


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



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

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

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



#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;



#52773 Текстовый файл

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

С массивом всё работает как швейцарские часы! :dirol:

+ то что можно получить доступ к любой строке файла быстро и без проблем
большой + то что(ведь в TC нельзя открыть одновременно больше одного файла одновременно, по крайней мере в версии 5.12.454), можно одновременно обрабатывать кучу файлов на приличной скорости



#52643 Текстовый файл

Отправлено автор: Rumata 08 февраля 2008 - 11:27 в SmartBear (AutomatedQA) - Functional Testing

при работе с массивами очень полезные функции - BuiltIn.VarArrayRedim() и VarArrayHighBound(). Когда точно не известно заранее сколько будет элементов в массиве без них не обойтись


А можно поподробнее насчёт этих функций?


кстати, почему не работает

for ks_i := 1 to ks do
readln(fff,m_file[ks_i]);


приходиться в массив писать через дополнительную строковую переменную
for ks_i := 1 to ks do
begin
readln(fff,qwer);
m_file[ks_i] := qwer;
end;



#52631 Текстовый файл

Отправлено автор: Rumata 08 февраля 2008 - 09:11 в SmartBear (AutomatedQA) - Functional Testing

ошибочка:
не
s := readln(f) ---> s := massiv[q+1];
а
readln(f,s) ---> s := massiv[q];
q:= q+1;


вот примерно так



#52629 Текстовый файл

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

можно записать все строки в массив(я делала так) и потом из массива вытаскивала по штуке.
PS (тоже встречалась с такой фигней что не освобождался файл и потом приходилось перегружать ТС - как избавиться на 100 % так не поняла)


классная идея спасибо!!!
счас вот реализую

Сначала перекидываю весь файл в двумерный массив а потом с ним работаю.

Если не я один с этим столкнулся выложу исходники может кому поможет


вот процедура которя пишет в массив
procedure From_file_in_file(file_ : elevariant);
var
fff; // файловая переменная
ks : integer; // количество строк в файле
ks_i : integer; // счётчик
str_f;
begin
if debug then
log.message('DEBUG: Начало процедуры перенесения файла в массив');
if not(fileexists(file_)) then
begin
Fatal_Error('Невозможно найти файл сценария: ',file_);
end;
AssignFile( fff, file_ );
Reset(fff);
// нужно определить размерность массивa
if debug then
log.message('DEBUG: Определяю размерность массива');
ks := 0;
while not(eof(fff)) do
begin
readln(fff,str_f);
ks := ks + 1;
end;
closefile(fff);
Reset(fff);
// создаю массив необходимой размерности
m_file := BuiltIn.CreateVariantArray(1, ks);
//заполняю массив
for ks_i := 1 to ks do
readln(fff,m_file[ks_i]);
closefile(fff);
if debug then
log.message('DEBUG: размерность массива: '+ inttostr(ks));
end;


в коде нужно сделать определ глоб переменную непример q
a потом заменить или делать по аналогии

reset(f) ---> q:=1
s := read(f) ---> s := massiv[q];
s := readln(f) ---> s := massiv[q+1];

вообщем всё просто и сердито :)



#52625 Текстовый файл

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

можно записать все строки в массив(я делала так) и потом из массива вытаскивала по штуке.
PS (тоже встречалась с такой фигней что не освобождался файл и потом приходилось перегружать ТС - как избавиться на 100 % так не поняла)


классная идея спасибо!!!
счас вот реализую

Сначала перекидываю весь файл в двумерный массив а потом с ним работаю.

Если не я один с этим столкнулся выложу исходники может кому поможет



#52622 Текстовый файл

Отправлено автор: Rumata 08 февраля 2008 - 03:01 в SmartBear (AutomatedQA) - Functional Testing

Delphi script

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

Столкнулся с такой проблемой: ассоциирую переменную с файлом
AssignFile( f, file_association );
Reset(f);


потом в скрипте у меня выполняются какие то действия по сценарию этого файла
но заморочка в том что у меня может в любой момент чтото отвалиться и файл не закрывается(использую CloseFile( f ); ), а нужно его отредактировать в реальном времени что нельзя сделать так как он заблокирован, приходиться перегружать TC

пробовал try-except, вызовы в критических кусках кода закрытия файла, но не получается отследитьвсе вариаты: либо возникает повторная ошибка закрытия либо файл блокируется

Подскажите как можно закрыть файл в людом случае при любых обстоятельствах.
А возможно ли запихать всё содержимое файла в переменную и работать с ней так же как и с файлом?