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

Фотография

<ob...> is null or not an object!?


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

#1 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 04 декабря 2007 - 07:50

Не всегда распознаются объекты (т.е. распознаются через раз, и один и тот же тест работает через раз), и выводится ошибка: <ob...> is null or not an object. Может, кто подскажет, в чём дело.
  • 0

#2 ArtemRudenko

ArtemRudenko

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

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 04 декабря 2007 - 07:57

Прочитайте сначала http://software-test...?showtopic=7790
А потом корректно задайте свой вопрос, если хотите чтобы на него вам ответили.
  • 0
И всё-таки она вертится...

#3 Rifle

Rifle

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Vitaliy
  • Город:Kyiv

Отправлено 04 декабря 2007 - 08:21

Сталкивался с подобно проблемой, когда нужно было выполнять над объектами много действий в рамках одного скрипта. Т-е когда есть переменная(ссылка) на объект, и над ней совершаются различные операции, установка параметров, вызов методов и т.д. Выходом из данной проблемы стало явное указание переменной на объект, перед каждым действием которое необходимо выполнить, т-е переопределение переменной ссылающийся на объект. Мне помогло, может и вам поможет, пробуйте.
  • 0

#4 Dmitry N

Dmitry N

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

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

Отправлено 04 декабря 2007 - 08:54

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

Объект не находится. Надо убедиться, что указано правильное имя и в момент выполнения он существует.
  • 0
С уважением,
Дмитрий

#5 LeshaL

LeshaL

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

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 04 декабря 2007 - 09:48

Не всегда распознаются объекты (т.е. распознаются через раз, и один и тот же тест работает через раз), и выводится ошибка: <ob...> is null or not an object. Может, кто подскажет, в чём дело.

Привет! Как уже тут написали о чем вопрос не очень понятно.
Я встречал такую ошибку при написании скриптов на JavaScript. С автоматическим тестированием это не было никак связано. Такое же поведение встречалось - то работает, то нет.
Причина может быть, в асинхронной загрузке какого-либо ресурса на web странице. Например на странице есть frame или iframe куда загружается какой-то документ. А скрипт, не дожидаясь события, что документ загружен пытается работать с этим документом или его объектами. Тут как раз и получается - как повезет - успел подгрузится - работает. Не успел - ошибка.
  • 0
Regards,
Alexey

#6 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 04 декабря 2007 - 11:22

Спасибо!
Я использую JScript, приложение написано на Java.
Эта проблема у меня возникает(как я только-то понял), только в том случае, когда я пытаюсь обратиться к объекту PopupMenu в приложении(что-то с ним не так=(((( ). Пытаюсь обойти как-то, пока безуспешно(((
  • 0

#7 LeshaL

LeshaL

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

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 04 декабря 2007 - 12:37

Спасибо!
Я использую JScript, приложение написано на Java.
Эта проблема у меня возникает(как я только-то понял), только в том случае, когда я пытаюсь обратиться к объекту PopupMenu в приложении(что-то с ним не так=(((( ). Пытаюсь обойти как-то, пока безуспешно(((

Если бы вы прислали кусок скрипта, то можно было бы пораскинуть мозгами. Проблема скорее всего не с самим ПопАпом, а с вашим скриптом.
  • 0
Regards,
Alexey

#8 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 04 декабря 2007 - 13:00

Через это меню даже два клика не проходит:
function Go_to_staffrole()
{
Sys.Process("asd").Window("com.gui.main.n", "ASD").JRootPane.null_layeredPane.JPanel.j_2.k.l.i.V.JPanel.JPanel.E.Click(95, 12);
Sys.Process("asd").Window("com.gui.main.n", "ASD").JRootPane.null_layeredPane.JPanel_2.JPopupMenu.JMenuItem_4.Click(65, 13);
}
  • 0

#9 LeshaL

LeshaL

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

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 04 декабря 2007 - 16:22

Через это меню даже два клика не проходит:
function Go_to_staffrole()
{
Sys.Process("asd").Window("com.gui.main.n", "ASD").JRootPane.null_layeredPane.JPanel.j_2.k.l.i.V.JPanel.JPanel.E.Click(95, 12);
Sys.Process("asd").Window("com.gui.main.n", "ASD").JRootPane.null_layeredPane.JPanel_2.JPopupMenu.JMenuItem_4.Click(65, 13);
}

Я, к сожалению, не имею опыта работы с данным инструментом автоматизации тестирования.
Но у меня есть подозрение, что надо немного подождать после вызова ПопАп меню. Оно просто физически может не успеть инициализироваться\отрисоваться.
Джава нетороплива.
  • 0
Regards,
Alexey

#10 tom_13

tom_13

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

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Киев

Отправлено 05 декабря 2007 - 09:50

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

BuiltIn["Delay"](1000); // 1000 -время в милисекундах

А потом свой код, если не подействует поставь больше задержку :)
  • 0

#11 Dmitry N

Dmitry N

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

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

Отправлено 05 декабря 2007 - 12:07

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

А во время выполнения скрипта само popup меню показывается на экране?
  • 0
С уважением,
Дмитрий

#12 ArtemRudenko

ArtemRudenko

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

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 05 декабря 2007 - 12:44

Тут уже как-то обсуждали вопрос по pop-up( http://software-test...showtopic=10351 ), но так, если подумать, приведенный вами метод просто кликает по координатам объекта(насколько я понимаю вашего попапа), но для того, чтобы он появился(pop-up), необходимо, как минимум, сначала его отобразить, подведя к нему курсор мыши(посмотрите,что-нить на подобии OnMouseHover) и , уже после того как он отрисуется, выполнить ваши действия.
Пока же вы просто вызываете метод для несуществующего объекта и получаете соответствующую ошибку - если я правильно понял, вы записали скрипт и теперь пытаетесь его стуктуризовать, но проблема в том, что такие действия как - подвод мышки под popup в обычном режиме не записываются(в винраннере для этого, например, был свой режим, который отслеживал перемещения мыши по экрану.)
  • 0
И всё-таки она вертится...

#13 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 05 декабря 2007 - 13:57

Задержка, к сожалению, не помогает (я это в первую очередь пробовал).
To tom_13: обычно я использую Sys.Delay(1000);
To Dmitry N: Меню само показывается, нажимается... и всё, больше никакой объект на обновленном окне не распознаётся (в ходе выполнения теста). Хотя в Display Object Properies никогда никаких проблем не бывает.
  • 0

#14 ArtemRudenko

ArtemRudenko

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

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 05 декабря 2007 - 14:09

Задержка, к сожалению, не помогает (я это в первую очередь пробовал).
To tom_13: обычно я использую Sys.Delay(1000);
To Dmitry N: Меню само показывается, нажимается... и всё, больше никакой объект на обновленном окне не распознаётся (в ходе выполнения теста). Хотя в Display Object Properies никогда никаких проблем не бывает.


Опишите более подробно поведение вашей системы: какие действия быбираются из меню, что должно произойти, приведите код, предшествуюший ошибки и провоцирующий ёё - это поможет быстрее понять проблему.
  • 0
И всё-таки она вертится...

#15 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 05 декабря 2007 - 15:13

Код сгенерирован просто Record/Playback. После нажатия на пункт меню, все новые объекты, которые вследствие этого нажатия появляются, перестают распознаваться, и код дальше не выполняется, переходит к "catch":


function Main()
{
try
{
TestedApps.RunAll();

var p1;
var w1;
var w2;
var w3;
var w4;
var w5;
var w6;
p1 = Sys.Process("asd");
w1 = Sys.Process("asd").Window("com.gui.main.n", "ASD");
w2 = w1.JRootPane.null_layeredPane;
w3 = w2.JPanel;
w4 = w3.j_2;
w5 = w4.a.l.f.JPanel;
w6 = w5.JPanel_2;
w6.JPanel.JTextField.Keys("a[Tab]");
w6.JPanel_2.JPasswordField.Keys("a[Tab]");
w5.JPanel_3.E.Click(30, 9);
w5 = w4.k.l.i.V;
w5.JPanel.JPanel.E.Click(115, 6);
w2.JPanel_2.JPopupMenu.JMenuItem.Click(67, 12); // последняя операция, которая проходит

Sys.Dalay(2000); //Задержка в этом месте также не помогла

w2 = w5.b.JPanel_3.JPanel_2; //ошибка: 'b.JPanel_3' is null or not an object
w4 = w2.JTextField;
w4.Drag(143, 8, -198, 0);
w4.Keys("sdfg");
w2.E_2.Click(32, 16);
p1.Window("SunAwtDialog", "Information").JRootPane.null_layeredPane.null_contentPane.JOptionPane.OptionPane_buttonArea.OptionPane_button.Click(16, 15);
w3.b.w.Click(37, 13);
w1.Close();
}
catch(exception)
{
Log.Error("Exception", exception.description);
}
}
  • 0

#16 ArtemRudenko

ArtemRudenko

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

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 05 декабря 2007 - 15:29

НУ по коду:
w2.JPanel_2.JPopupMenu.JMenuItem.Click(67, 12); - я почти уверен, что здесь можно работать нетолько через координаты.
Вместо Sys.Delay я бы советовал использовать методы из группы Wait, например WaitAWTObject.
Что же до того, что у вас далее ругается, я бы для дебага, разбил на части ваше выражение w5.b.JPanel_3.JPanel_2 и удостоверился в том, что видно, а что нет(особенно, обратите внимание на b- есть ли такой объект в самом деле), и как все эти объекты выглядят в Object Browser. Бывает такое, что в опциях стоит условие при записи, если есть возможность, использовать короткие имена, тогда могут возникать ошибки при воспроизведении, поэтому есть смысл убедится в том, что объект именуется именно так, как вы к нему обращаетесь, причем имена должны совпадать 1 к 1.

И маленький совет: старайтесь как можно реже использовать запись.
  • 0
И всё-таки она вертится...

#17 Dmitry N

Dmitry N

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

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

Отправлено 06 декабря 2007 - 05:59

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

Sys.Dalay(2000); //Задержка в этом месте также не помогла

Ну, во-первых, не Sys.Dalay, а BuiltIn.Delay. Если вы используете плагин 'TestComplete 3 Compatibility', то настоятельно рекомендую от него избавиться (File | Install Extensions...) -- жить станет легче, хоть и придётся перезаписать существующие тесты.

Во-вторых, попробуйте ещё такую строку вставить сюда:

w5.Refresh();
  • 0
С уважением,
Дмитрий

#18 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 06 декабря 2007 - 09:25

За "w5.Refresh();" отдельное спасибо, тест проходить начал чаще =)
Но проблема еще осталась.

Что касается Object Browser, то все объекты соответствуют записи.
  • 0

#19 ArtemRudenko

ArtemRudenko

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

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 06 декабря 2007 - 09:29

А я всё о своём)))
Если Refresh вам помог - это хорошо.
А вы попробовали вместо просто delay методы Wait(WaitWindow,WaitProperty,....)? Обычно они помогают решить вопросы с синхронизацией приложения.
  • 0
И всё-таки она вертится...

#20 gvvad

gvvad

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Gez' Vadim Viktorovicch
  • Город:Украина, Днепропетровск

Отправлено 06 декабря 2007 - 09:46

Отключил 'TestComplete 3 Compatibility' и жить стало проще=)
всё работает!!!!!!!

Всем СПАСИБО!;)))
  • 0


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

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