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

Фотография

TestComplete 4.23


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 05 июля 2006 - 14:58

Всем привет!

Возникла проблема.
Есть скрипт, который просто "нагоняет" данные в базу через интерфейс. Очень простой, никаких прверок. Данные из Excel - файла сорхраняются в ODT-объекты, а потом вводятся в форму. Суть проблемы - выполняется от 2 до 10 итераций (в зависимости от "настроения") и TestComplete "умирает" - не видит форму, не реагирует на мои действия.
Кто-то еще сталкивался с подобным?
Как с этим бороться, если можно бороться вообще?

Спасибо.
  • 0

#2 Rost

Rost

    Постоянный участник

  • Members
  • PipPipPip
  • 241 сообщений
  • ФИО:Rostyslav Boruk
  • Город:Украина, Киев

Отправлено 06 июля 2006 - 11:56

Всем привет!

Возникла проблема.
Есть скрипт, который просто "нагоняет" данные в базу через интерфейс. Очень простой, никаких прверок. Данные из Excel - файла сорхраняются в ODT-объекты, а потом вводятся в форму. Суть проблемы - выполняется от 2 до 10 итераций (в зависимости от "настроения") и TestComplete "умирает" - не видит форму, не реагирует на мои действия.
Кто-то еще сталкивался с подобным?
Как с этим бороться, если можно бороться вообще?

Спасибо.

Просмотр сообщения


Сложно сказать без кода и подробного описания проблемы. Тут и при открытии XML могут быть проблемы. Например: Вы открываете xml-файл и сразу начинаете обработку. Может не успеть открыться файл и тогда система будет ждать его до посинения. Или например вы не закрываете свой объект и по этому система не может его передать на форму.

Попробуйте более детально описать что не так. На каком этапе Вы получаете отказ программы.
  • 0
Ростислав Борук,
Консультант по процессам тестирования

#3 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 06 июля 2006 - 12:10

Попробую описать более детально.
Первый кусок скрипта - считывание из Excel-файла и сохранение данных в ODT - отрабатывает нормально.
Вторая часть.
для каждого объекта ODT выполняется следующее: открывается форма ввода. Данные из ODT вводятся в форму. Сохраняем изменения. Запись появляется в гриде. Открываем форму ввода и т.д. Вот эту пресловутую форму ввода TC и не находит после n-ой итерации. Причем я пыталась ставить задержку, чтоб данніе успевали сохраниться, а форма прогрузиться. И Wait ставила - бесполезно.

Код - в прилагаемом файле
  • 0

#4 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 06 июля 2006 - 12:57

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

Код - в прилагаемом файле

Что-то файла я не нашел. Вы не забыли его прицепить?
  • 0
С уважением,
Дмитрий

#5 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 06 июля 2006 - 13:19

Не разрешает мне прикрепить файл, никакой, ни с каим расширением. Вставить текстом?
:crazy:
  • 0

#6 Rost

Rost

    Постоянный участник

  • Members
  • PipPipPip
  • 241 сообщений
  • ФИО:Rostyslav Boruk
  • Город:Украина, Киев

Отправлено 06 июля 2006 - 13:28

Не разрешает мне прикрепить файл, никакой, ни с каим расширением. Вставить текстом?
:crazy:

Просмотр сообщения


Можно начать хотя бы с того места где программа перестает работать. Поставьте точку останова и посмотрите где именно вылетает. Можно повторить n раз и посмотреть не одно ли это место. Если одно то его и пошлите, если не одно то можно по частям.
  • 0
Ростислав Борук,
Консультант по процессам тестирования

#7 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 06 июля 2006 - 13:37

Вот код вызываемого для объекта ODT метода.

function clsOrderData_InputData (sPosNumber)
//ввод данных о заказе
//input
// sPosNumber - количество единиц каждой позикии заказа
{   
    var i;
    var WizRegister;
    var Wizard;
    var WizardPage1;  
    var WizardPage2;
    var WizardPage4;
       
    var AwProcess = Sys["Process"]("Aw.Interface.Start");    
   
    BuiltIn["Delay"](2000);
    WizRegister = AwProcess["WinFormsObject"]("WizRegister");
    Wizard      = WizRegister["WinFormsObject"]("wizard");
     
    //wizard page 1
      WizardPage1 = Wizard["WinFormsObject"]("wizardPage1"); 
      WizardPage1["WinFormsObject"]("rbNew")["Click"](10, 10);      //виснет вот тут. говорит, что ждет вот эту самую "WizRegister"
      //owner type      
      WizardPage1["WinFormsObject"]("cbNewType")["ClickItem"](VarToInteger(sOwnerType));
      //push Next
      WizRegister["WinFormsObject"]("pnlButtons")["WinFormsObject"]("btnForward")["ClickButton"]();

Повторить n раз, как вы советуете с точкой останова я пробовала. Кстати, в дебаге работает замечательно.
Весь скрипт или даже проект могу прислать по мейлу.
  • 0

#8 Rost

Rost

    Постоянный участник

  • Members
  • PipPipPip
  • 241 сообщений
  • ФИО:Rostyslav Boruk
  • Город:Украина, Киев

Отправлено 06 июля 2006 - 14:01

На самом деле, так что бы быть уверенным во всем, посмотрите пожалуйста, когда Ваша программа виснет, висит ли процесс с которым Вы работаете. А в идеале посмотреть, когда он был открыт. Может попробуйте перед этим читать список процессов и искать свой. Может все таки что-то не то с открытием\закрытием.
  • 0
Ростислав Борук,
Консультант по процессам тестирования

#9 GoD

GoD

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 06 июля 2006 - 14:04

Можно нескромный вопрос?! Где можно достать Test Complite, не триал версию а хотя бы кракнутую?
  • 0

#10 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 06 июля 2006 - 14:05

Нет, мой процесс не висит, он нормально функционирует.
С открытием-закрытием все то.
Если бы было не то, почему N операций выполняется, а на N+1-ой - глохнет?
  • 0

#11 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 06 июля 2006 - 14:08

Можно нескромный вопрос?! Где можно достать Test Complite, не триал версию а хотя бы кракнутую?

Просмотр сообщения


Не знаю :crazy:
У меня лицензионный :)
  • 0

#12 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 07 июля 2006 - 07:42

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

  WizRegister = AwProcess["WinFormsObject"]("WizRegister");
  Wizard      = WizRegister["WinFormsObject"]("wizard");
   
  //wizard page 1
    WizardPage1 = Wizard["WinFormsObject"]("wizardPage1");
    WizardPage1["WinFormsObject"]("rbNew")["Click"](10, 10);      //виснет вот тут. говорит, что ждет вот эту самую "WizRegister"

Странно, на той строке, которую вы указали, объект 'WizRegister' вроде и не берется...
Вы уверены, что именно на этой строке выдается ошибка и что именно такая ошибка выдается? Вы можете два раза кликнуть по ошибке в логе и ТС подсветит соответствующую строку в коде.

Кстати, вы говорите, что проблема возникает только на некоторой итерации, но никогда на первой. А как зыкрывается проблемное окно? Может пришлете код, который закрывает окно и вызывает функцию clsOrderData_InputData?
  • 0
С уважением,
Дмитрий

#13 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 07 июля 2006 - 07:55

Да, Дмитрий, Вы правы, в этой строке WizRegister вроде как и не вызывается. Вызывается порождаемый им объект.

Вы уверены, что именно на этой строке выдается ошибка и что именно такая ошибка выдается? Вы можете два раза кликнуть по ошибке в логе и ТС подсветит соответствующую строку в коде.

Да, я уверена, что именно это строка.
Кликнуть в логе не могу, поскольку TC виснет мертво, снимаю его через Task Manager, лог не сохраняется, то есть вот именно запись об этой ошибке в нем не сохраняется.

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

Окно визарда регистрации не закрывается и не открывается из скрипта.
В визарде есть такая функция: "Зарегистрировать запись и перейти к регистрации следующей". То есть функция закрыть/открыть визард выполняется не ТС, а тестируемым приложением.

clsOrderData_InputData - это исходный код метода InputData. И вызывается она как метод вот в этой строке:

a_Order(i)['InputData'](i + 10)

Такие проблемы возникали не только у меня и не только на данном тестируемом приложении, но и у других тестировщиков нашей компании.
  • 0

#14 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 07 июля 2006 - 08:15

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

    //push Next
    WizRegister["WinFormsObject"]("pnlButtons")["WinFormsObject"]("btnForward")["ClickButton"]();

Я так понимаю, что цикл заканчивается на этой строке, то есть после ее выполнения функция запускается заново. Если это так, то попробуйте вставить такой код после этой строки:
 while (WizRegister["Exists"]) Delay(50);
У меня есть предположение, что окно это пересоздается каждый раз, когда скрипт начинает новую итерацию. В этом случае, в начале очередной итерации скрипт может взять еще не до конца "убитый" старый объект окна. Когда выполнение доходит до проблемной строки, объект "умирает" и соответственно ТС не может выполнять действия над ним. Этот код должен убедиться, что объект уничтожен перед тем как переходить к новой итерации.
  • 0
С уважением,
Дмитрий

#15 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 07 июля 2006 - 08:27

На самом деле задержка там стоит (стояла :blush: - не помню, какой вариант скрипта ушел вам). Не помогает :(
  • 0

#16 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 07 июля 2006 - 11:13

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

Тогда попробуйте взять окно перед проблемной строкой еще раз:
 WizRegister = AwProcess["WinFormsObject"]("WizRegister");
  Wizard      = WizRegister["WinFormsObject"]("wizard");
    
  //wizard page 1
    WizardPage1 = Wizard["WinFormsObject"]("wizardPage1"); 
    AwProcess["WinFormsObject"]("WizRegister")["WinFormsObject"]("wizard")["WinFormsObject"]("wizardPage1")["WinFormsObject"]("rbNew")["Click"](10, 10);      //виснет вот тут. говорит, что ждет вот эту самую "WizRegister"

  • 0
С уважением,
Дмитрий

#17 dziga

dziga

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • Город:Киев, Украина

Отправлено 07 июля 2006 - 11:18

О, это идея!!

Спасибо большое за потраченное время, я попробую.
Результат сообщать? :)
  • 0

#18 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 10 июля 2006 - 06:08

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

Конечно, интересно же. :)
  • 0
С уважением,
Дмитрий

#19 BezMad

BezMad

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Гололобов Андрей

Отправлено 26 октября 2011 - 13:31

Здравствуйте,вот пример кода...вопрос сам-после кода.

var RecNo;

// Posts data to the log (helper routine)
function ProcessData()
{
var Fldr, i;

Fldr = Log.CreateFolder('Record: ' + aqConvert.VarToStr(RecNo));
Log.PushLogFolder(Fldr);

for(i = 0; i < DDT.CurrentDriver.ColumnCount; i++)
Log.Message(DDT.CurrentDriver.ColumnName(i) + ': ' + aqConvert.VarToStr(DDT.CurrentDriver.Value(i)));

Log.PopLogFolder();
RecNo = RecNo + 1;
}

// Creates the driver (main routine)
function TestDriver()
{
var Driver;
// var searchDates = {};
// Creates the driver
// If you connect to an Excel 2007 sheet, use the following method call:
// Driver = DDT.ExcelDriver("C:\\MyFile.xlsx", "Sheet1", true);
Driver = DDT.ExcelDriver('C:\\Users/ScriptDates.xlsx', 'SearchDates',true);

// Iterates through records
RecNo = 1;
while (! Driver.EOF() )
{
ProcessData(); // Processes data
Driver.Next(); // Goes to the next record


}

// Closing the driver
DDT.CloseDriver(Driver.Name);
}

этот кусок кода считывает данные из экселя и загоняет в лог. Подскажите, пожалуйста, как записать эти данные в массив?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных