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

Фотография

Недоступны поля, объекты при удаленном тестировании


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

#1 Evgeny.Sh

Evgeny.Sh

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

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

Отправлено 23 января 2013 - 12:54

Здравствуйте! Помогите, пожалуйста, разобраться со следующей проблемой.
Использую TestComplete 9.1 trial, установленный на Win7 и TestExecute на WinXP.

Следующий скрипт успешно выполняется локально, но при попытке выполнить его удаленно выходит сообщение, что объект XtraMainMenu не найден.

Sub Test1  
dim p,w
   set p=sys.process("SomeProcess")
   Set w = p.Window("*","SomeCaption*")
   w.Activate
   w.XtraMainMenu.Click("File")
End Sub

Как правильно обращаться к объектам приложения с учетом удаленного запуска теста?
  • 0

#2 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 23 января 2013 - 12:56

Как правильно обращаться к объектам приложения с учетом удаленного запуска теста?


Удаленный - в смысле через Remote Desktop? Или как?
Вот тут для начала почитайте, может ваш случай
http://tctutorial.ru/remotevirtual/
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#3 Evgeny.Sh

Evgeny.Sh

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

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

Отправлено 23 января 2013 - 13:43

Удаленный - в смысле через Remote Desktop? Или как?
Вот тут для начала почитайте, может ваш случай
http://tctutorial.ru/remotevirtual/


В проекте добавил компонент Network Suite, прописал Host, способ запуска указал Automatic (Console Action).
Тест на удаленной машине выполняется, по крайней мере, приложение запускается, но вот некоторые свойства не доступными становятся.
Хочу понять по каким причинам.
В книжке не тот случай описан, в моем примере нет блокировок, сворачиваний окон.
  • 0

#4 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 23 января 2013 - 15:10

Может на удаленной машине нужные Extensions не подключены?
XtraMainMenu - это вроде как из DevExpress, значит нужны подключенные экстеншены .NET и DevExpress.

Если DevExpress на удаленной машине не установлен, то по умолчанию экстеншены могли не проинсталлиться
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#5 Evgeny.Sh

Evgeny.Sh

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

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

Отправлено 24 января 2013 - 10:34

Может на удаленной машине нужные Extensions не подключены?
XtraMainMenu - это вроде как из DevExpress, значит нужны подключенные экстеншены .NET и DevExpress.

Если DevExpress на удаленной машине не установлен, то по умолчанию экстеншены могли не проинсталлиться


Благодарю за совет, действительно, на удаленной машине экстеншены не были подключены. Установил .net до 4 версии, как на 1 машине, подключил экстеншены - не помогло. Установил DXperienceUniversal-9.1.3 на обеих машинах, результата нет.

В каком направлении еще можно искать решение?
  • 0

#6 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 24 января 2013 - 11:03

В каком направлении еще можно искать решение?


посмотреть, как распознаются контролы в обоих случаях, сравнить. Должны быть различия. Результаты можно сюда скинуть в описательной форме, будем дальше думать :)
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#7 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 24 января 2013 - 12:54

А еще посмотреть в свойствах проекта в обоих случаях разделы MSAA и UI Automation, там всё должно быть одинаково.
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#8 Evgeny.Sh

Evgeny.Sh

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

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

Отправлено 25 января 2013 - 07:08

Настройки одинаковые т.к. проект полностью копируется на удаленную машину. Есть меню Options в TestExecute на удаленной машине, но там установки аналогичные.

Прогнал следующий скрипт на обеих машинах

sub test
dim p,controls,PropNames,PropValues, st

  set p =sys.Process("SomeProcess")
  PropNames = Array("Name")
  PropValues  = Array("*")
  controls = p.FindAll(PropNames,PropValues,10)
  st=""
  If UBound(controls) >= 0 Then
    For i = 0 To UBound(controls)
      Log.Message(controls(i).FullName)
      st= st & VbCrLf & controls(i).FullName
    Next
    Log.Message("Total number of found controls: " & (UBound(controls) + 1))
  Else
    Log.Warning("No controls were found.")
  End If
  Log.Message(st)
end sub

Результат

На локальной машине

Sys.Process("SomeProcess")
Sys.Process("SomeProcess").WinFormsObject("FormMain")
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("MdiClient", "")
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("BarDockControl", "", 1)
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("BarDockControl", "", 2)
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("BarDockControl", "", 3)
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("BarDockControl", "", 3).WinFormsObject("DockedBarControl", "")
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("BarDockControl", "", 4)
Sys.Process("SomeProcess").WinFormsObject("FormMain").WinFormsObject("BarDockControl", "", 4).WinFormsObject("DockedBarControl", "")
Sys.Process("SomeProcess").Window("GDI+ Hook Window Class", "GDI+ Window", 1)
Sys.Process("SomeProcess").Window(".NET-BroadcastEventWindow.2.0.0.0.2004eee.0", ".NET-BroadcastEventWindow.2.0.0.0.2004eee.0", 1)
Sys.Process("SomeProcess").Window("MSCTFIME UI", "MSCTFIME UI", 1)
Sys.Process("SomeProcess").Window("IME", "Default IME", 2)
Sys.Process("SomeProcess").Window("IME", "Default IME", 1)
Sys.Process("SomeProcess").AppDomain("DefaultDomain")



На удаленной машине

Sys.Process("SomeProcess")
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", "SomeCaption", 1)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.MDICLIENT.app.0.2004eee", "", 1)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.Window.8.app.0.2004eee", "", 1)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.Window.8.app.0.2004eee", "", 2)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.Window.8.app.0.2004eee", "", 3)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.Window.8.app.0.2004eee", "", 3).Window("WindowsForms10.Window.8.app.0.2004eee", "", 1)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.Window.8.app.0.2004eee", "", 4)
Sys.Process("SomeProcess").Window("WindowsForms10.Window.8.app.0.2004eee", ""SomeCaption»", 1).Window("WindowsForms10.Window.8.app.0.2004eee", "", 4).Window("WindowsForms10.Window.8.app.0.2004eee", "", 1)
Sys.Process("SomeProcess").Window(".NET-BroadcastEventWindow.2.0.0.0.2004eee.0", ".NET-BroadcastEventWindow.2.0.0.0.2004eee.0", 1)
Sys.Process("SomeProcess").Window("GDI+ Hook Window Class", "GDI+ Window", 1)
Sys.Process("SomeProcess").Window("MSCTFIME UI", "M", 1)
Sys.Process("SomeProcess").Window("IME", "Default IME", 1)
Sys.Process("SomeProcess").Window("IME", "Default IME", 2)


Получается на локальной машине "лишний элемент" - Sys.Process("SomeProcess").AppDomain("DefaultDomain")
Ну и по разному объекты определяются.

Попробовал обращаться к объектам так, как на удаленной машине определяются, итог такой же, не найден объект или свойство.
  • 0

#9 Rebz

Rebz

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

  • Members
  • PipPipPipPip
  • 471 сообщений


Отправлено 25 января 2013 - 08:26

Хех, как будто у Вас патч не стоит для .Net. Хотя это было в версии 7.52.
Убедитесь, что нужный фреймворк стоит или одинаковый.
  • 1

#10 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 25 января 2013 - 09:11

Rebz прав, у вас типичная ситуация, когда .NET контролы не определяются как .NET. В чем именно проблема (в тесткомплите или в системе) - сказать трудно. В версии 9 эта проблема должна быть пофикшена уже, она была актуальна для 7й версии.

Решите проблему с определением контролов (они везде должны определяться как WinFormsObject) и проблема с "лишним" элементом AppDomain перестанет быть проблемой.

Мне всё же кажется, что соответствующий Extension (.NET Open Application Support) не был включен на второй машине. Или же он каким-то образом отключается каждый раз...
  • 2

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#11 Evgeny.Sh

Evgeny.Sh

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

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

Отправлено 25 января 2013 - 12:03

Благодарю за помощь!

Ваши советы попали в точку. На удаленной машине в дополнение к предшествующей установке .NET и пр.
выполнил исправляющую установку (Repair) TestExecute, поставил галки на всех екстеншенах на обеих машинах.
Теперь обнаруживается 1024 объекта вместо жалких 15 на обеих машинах :)

Единственное, вместо WinFormsObject отображается UIAObject, но главное, что объекты и их свойства доступны на обеих машинах.
  • 0

#12 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 25 января 2013 - 12:05

Единственное, вместо WinFormsObject отображается UIAObject, но главное, что объекты и их свойства доступны на обеих машинах.


Зайдите в свойства проекта и отключите в разделе UI Accessibility все ненужные классы. Для .НЕТ объектов они не нужны, только тормозят вам всё
  • 1

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest



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

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