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

Фотография

TestComplete пишет 'Object not found'


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

#1 Xena

Xena

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Oksana

Отправлено 13 декабря 2010 - 13:17

Помогите пожалуйста! Я совсем новичек в автоматизированном тестировании.

Есть записанный с помощью TestComplete скрипт, который не хочет выполняться, в логах пишется 'The object does not exist'. Как я поняла происходит следующее, при запуске скрипта начинает открываться приложение (Smart Client application) но не успев загрузиться полностью скрипт начинает выполняться дальше и пишет 'The object does not exist' естественно.

Вот кусок скрипта:
function Test1()
{
var frmMain;
var frmFinder;
var tabControl;
var tabControl2;
var tabPageEx;
var textBox;
var buttonPanel;
var button;
TestedApps.rundll32.Run(1, true);
frmMain = Aliases.CDBNET.frmMain;
frmMain.MainToolBar.ClickItem("Find Contacts");
Objects.frmFinder.Check(Aliases.CDBNET.frmMain.MdiClient.frmFinder);

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

Можно ли как то приостановить выполнения скрипта пока приложение не загрузится.
В хэлпах я нашла следующее

The following code shows how to implement a waiting period of up to two seconds for launching Microsoft Word from script:

p = Sys.WaitProcess("winword", 2000);
if (p.Exists) // if the process exists ...


Но видно я совсем ламер и применить это не получилось (. Помогите пожалуйста. Заранее спасибо.
...
  • 0

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 13 декабря 2010 - 14:13

Помогите пожалуйста! Я совсем новичек в автоматизированном тестировании.

Есть записанный с помощью TestComplete скрипт, который не хочет выполняться, в логах пишется 'The object does not exist'. Как я поняла происходит следующее, при запуске скрипта начинает открываться приложение (Smart Client application) но не успев загрузиться полностью скрипт начинает выполняться дальше и пишет 'The object does not exist' естественно.

Вот кусок скрипта:
function Test1()
{
var frmMain;
var frmFinder;
var tabControl;
var tabControl2;
var tabPageEx;
var textBox;
var buttonPanel;
var button;
TestedApps.rundll32.Run(1, true);
frmMain = Aliases.CDBNET.frmMain;
frmMain.MainToolBar.ClickItem("Find Contacts");
Objects.frmFinder.Check(Aliases.CDBNET.frmMain.MdiClient.frmFinder);

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

Можно ли как то приостановить выполнения скрипта пока приложение не загрузится.
В хэлпах я нашла следующее

The following code shows how to implement a waiting period of up to two seconds for launching Microsoft Word from script:

p = Sys.WaitProcess("winword", 2000);
if (p.Exists) // if the process exists ...


Но видно я совсем ламер и применить это не получилось (. Помогите пожалуйста. Заранее спасибо.
...

Если время небольшое и вы знаете какое посавьте задержку delay(30000)
Вы же ждете окно, а не процесс. Т.е. я понимаю у вас запускается приложение с главным окном - поэтому проверяйте на существования окно - если нет, то ждать, и снова проверять...
Используйте WaitWindow
  • 0

#3 Xena

Xena

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Oksana

Отправлено 13 декабря 2010 - 16:44

Спасибо большое! Завтра буду пробовать.
  • 0

#4 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 13 декабря 2010 - 18:37

Кстати, ошибка "Object not found" может возникать не только при "подтормаживании" тестируемого приложения, но еще и в случае неправильных идентификационных свойств объектов в тесте или Name Mapping. Запостите сюда текст из Remarks / Additional Information вашей ошибки - там должна быть какая-нибудь полезная инфа.


  • 0

#5 Dmitry N

Dmitry N

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

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

Отправлено 15 декабря 2010 - 06:28

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

Подозреваю, что Вы тестируете Delphi приложение. Когда такая беда случается, в Object Browser проблемный объект имеет имя VCLObject('...') или Window('...')? Если второе, то я с такой проблемой сталкивался в одной из ранних версий TestComplete 7 - приложение при загрузке не реагирует в течении некого таймаута на попытки TC получить информацию об объектах приложения, и TestComplete решает что не будет работать с приложением как с Open приложением. Мне в службе поддержки рекомендовали увеличить 'Method invoke timeout' до 10000 или даже 30000. Эта опция в группе Open Applications настроек проекта.
  • 0
С уважением,
Дмитрий

#6 Kate4kina

Kate4kina

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

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

Отправлено 16 декабря 2010 - 15:12

А я бы Вам порекомендовала пользоваться методом findChild:
Например, кусок скрипта запуска IE (VBScript)

set ie = Sys.FindChild("ProcessName", "iexplore", 1)
do while ie.Exists
ie.Terminate
delay 300
set ie = Sys.FindChild("ProcessName", "iexplore", 1)
loop
set ie = TestedApps.iexplore
  • 0


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

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