Test Complete/Execute 8 не будет RefreshMappingInfo, если это не сделано через COM
Я запускаю тестовый скрипт в TestComplete v8. Граф объектов в памяти устареет (как появилось диалоговое окно).
Я запускаю следующий код VBScript
Sys.Process("iexplore").RefreshMappingInfo()
И я получаю следующее сообщение об ошибке...
Unable to find the object RefreshMappingInfo. See Additional Information for details.
The object with the specified attributes does not exist.
Possible causes of the error
Эта ошибка относится к TC, интерпретирующему вызов метода как попытку найти элемент управления.
Что действительно странно... Если я подключаюсь к TC8 через COM и выполняю тот же код, он работает нормально. Итак, в рубине:
require 'win32ole'
tc = WIN32OLE.connect("TestComplete.TestCompleteApplication.8")
integration = tc.integration
Sys = integration.GetObjectByName("Sys")
puts Sys.Process("iexplore").Page("http://localhost:50563/x.aspx") _
.Form("form1").Panel("silverlightControlHost").Object(0).UIAObject("Popup").Exists
' This returns false
Sys.Process("iexplore").RefreshMappingInfo()
' No error raised
puts Sys.Process("iexplore").Page("http://localhost:50563/x.aspx") _
.Form("form1").Panel("silverlightControlHost").Object(0).UIAObject("Popup").Exists
' returns true
Почему это не работает во время теста? Как мне это исправить?
1 ответ
TestComplete имеет три дерева объектов:
- Дерево Sys, которое находится на панели "Обозреватель объектов" и содержит все объекты приложения.
- Дерево NameMapping, которое содержит все имена сопоставлений.
- Дерево псевдонимов, которое используется при записи тестов и может быть гибко изменено тестером.
Объекты в ссылочном объекте дерева псевдонимов в дереве NameMapping и объекты в последующем ссылаются на объекты в дереве Sys. Метод RefreshMappingInfo используется для обновления этих ссылок, хранящихся в объектах дерева NameMapping, на объекты в дереве Sys. Таким образом, метод существует только для объектов из деревьев NameMapping и Aliases.
В вашем коде вы работаете с объектом в дереве Sys: Sys.Process ("iexplore"). Вы получаете ошибку, так как объекты из дерева Sys не имеют метода RefreshMappingInfo. Вам нужно либо вызвать метод Refresh, либо попробовать работать с объектом из дерева имен или псевдонимов. Например:
- Sys.Process ("Iexplore"). Refresh ()
- Aliases.IExplore.RefreshMappingInfo ()