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

Публикации Rumata

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



#46656 сокрытие приложения

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

Да я чего то забыл :)
использую DelphiScript
Win XP
тестируемые приложения (точнее не тестируемые в них я делаю дополнительную обработку данных из за чего их желательно скрыть) :
telnet и notepad



#46651 сокрытие приложения

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

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



#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 элементарнейший клиент и из него уже таскать данные???



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



#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 номер строки и столбца.


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



#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(); не хотит :)



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


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



#46450 Работа С Excel

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

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

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



#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 и данные тоже ввожу только им а вот полученыы результат уже и выводить
мне надо не одну не две команды написать , нужно организовать целую серию запросов-ответов



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

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

я тут нашёл ещё...
так не пойдёт заменить ту строку??
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 какие только были, значиться у меня её нет? как можно её найти?
Подскажите пожалуста



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

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

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

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


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



#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 при компиляции даёт ошибку, хотя в редакторе ошибки не идентифицируются
Если кто делал что нить подобное напишите пожалуста



#46392 Tc Не Видит Кнопку По Которой Надо Кликнуть

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

Пасиб Большое Refresh помог!!!
весь день экспериментировал со всякой лабудой, а так не догадался :)

А насчет ошибок: бывает при одном запуске скрипт отрабатывает а потом нет, еще было рабочие процедуры перестали работать, потом ради эксперимента убрал комментарии на других которые делали совершенно другие действия и всё заработало...



#46366 Tc Не Видит Кнопку По Которой Надо Кликнуть

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

Здравствуйте все у меня такая вот ошибка, второй день над ней мучаюсь

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

Суть программы такова, есть удалённые Unix сервера которые чего там делают
Программа же их администрирует

так вот
у меня еся на форме проги кнопка "Отчёты" по клику на ней вылазит маленькое окошко где размещены пять кнопок на различные отчеты.
ошибка вот в чем первые две кнопки сверху кликаются без проблем , третья же не хотит: в логе лезит ошибкаThe window is disabled. The action cannot be executed.

Так вот пробовал вчера первые две процедуры комментировать - не работало, теперь же работает клик по третьей кнопке если нет первых процедур
весь прикол в том что процедуры идентичны почти там просто разные имена кнопок
и по проверке кнопка как бы существует
if Sys.Process('javaw').SwingObject('JDialog', 'Окно отчетов ', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('Box', '', 0).SwingObject('JButton', 'Отчет о перезагрузках прикладного сервера', 2).Exists then
begin
// кликаем по кнопке о выводе отчёта( 3-й с верху)
// кнопку он видит пробуем кликнуть
Log.Message('Кнопка экзистится пробуем кликануть по ней');
Sys.Process('javaw').SwingObject('JDialog', 'Окно отчетов ', -1).SwingObject('JRootPane', '', 0).SwingObject('null.layeredPane').SwingObject('null.contentPane').SwingObject('Box', '', 0).SwingObject('JButton', 'Отчет о перезагрузках прикладного сервера', 2).Click();
t := true;
end

исключение не возникает код рабочий.

и скажите ещё у testcomplita порой глюки лезят , это нормальный режим работы ? :)

пробовал ставить у окна свойсва enabled и focus в true всё равно не работает
refresh тоже не работает

скриншот прилагаю
и полный код скрипта
Помогите пожалуста, или есть у кого нить какие идеи по этому поводу

Прикрепленные файлы