2016-03-07 2 views
1

Получение следующее сообщение об ошибке при выполнении сценария:объект HP-UFT не найден в хранилище ошибок объекта

WebList object was not found in the Object Repository. 
Check the Object Repository to confirm that the object exists or to find the correct name for the object. 

Line (1221): "objParent.WebList(vstrObjectName).select vstrValue". 
+0

Добро пожаловать в переполнение стека. Пожалуйста, помогите нам ответить на ваш вопрос, предоставив дополнительную информацию: какой скрипт вы используете? Какие результаты вы ожидаете. Это помогает обеспечить больше кода, который влияет на ошибку. Для получения полезных советов по заданию вопросов перейдите по адресу http://stackoverflow.com/help/on-topic – ralphearle

ответ

2

Я понимаю, это не должно быть так просто, как объект не доступен в репозитории, но в in case- Попробуйте использовать «Locate in repository»

2

Похоже, что Line (1221) пытается получить доступ к объекту WebList по имени, но имя хранится в переменной; это не строковый литерал в коде.

Здесь может быть 3 разных вещи.

1) если вы пытались использовать Описательное программирование, то это похоже на то, что содержимое vstrObjectName не содержит символ «: =», который заставит QTP считать строку описанием ... Итак, QTP думает строка, хранящаяся в файле vstrObjectName, должна быть именем объекта в репозитории объектов.

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

2) Если вы пытаетесь контролировать объект с именем из хранилища объектов, то либо строка, содержащаяся в vstrObjectName не содержит действительное имя объекта (который принадлежит к objParent) или

3) объект, на который ссылается objParent, не тот, который вы ожидали.

В любом из этих случаев, если бы это было, то первое, что я хотел бы сделать, это добавить оператор печати перед строкой 1221 как: Print "vstrObjectName:« ... и запустить & vstrObjectName & «»» снова. Это должно показать строку, на которую вы ссылались. Я бы предположил, что итоговая выходная строка не такая, как вы ожидали.

Еще одна вещь, которую нужно проверить, - убедиться, что действие или функция, содержащая эту строку, выполняется из действия, содержащего этот именованный объект в его области. (т. е. откройте действие и нажмите CTRL-R, он отобразит объединенное ИЛИ, которое видно для этого действия). Если строка находится в библиотеке функций и вызывается из действия, у которого нет объекта в его локальном OR или вложенном совместно используемом OR, тогда вы получите ту же ошибку. Эту проблему очень легко вызвать, если вы используете несколько действий, а действие, содержащее вызов функции, содержащей вашу строку (строка 1221), на самом деле не имеет этого объекта, доступного для него из-за его области OR.

Чтобы ответить на заданный вами вопрос - как добавить объект в OR - вы можете использовать несколько методов - запись, добавление кнопки «guispy» к кнопке «ИЛИ», добавление вручную с экрана «ИЛИ» и т. Д.), Но, в конце концов, вы нужно, чтобы этот объект в OR имел имя, которое соответствует тому, что находится в vstrObjectName.

0

некоторых потенциальных примеров, когда объект может быть выбран:

Динамическое изменение объекта на основе имени объекта в хранилище объектов (должны существовать в хранилище)

Dim objectname 
objectname = "SAP Work Manager" 
msgbox WpfWindow(objectname).Exist 

Выберите точку объект, который не существует в хранилище объектов, по своим свойствам:

WpfWindow("text:=SAPWorkManager").Exist 

Example page of UFT tips