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

Фотография

[QTP 10] More than one object found error


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

#1 Jed Meyers

Jed Meyers

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Jed Ezriela Meyers

Отправлено 22 декабря 2009 - 14:36

У нас есть обычные десктопы с Вистой и VMWare. При запуске тестов на VMWare стала вылазить очень неприятная проблема с обьектами Link и WebElement.
Описание проблемы в комментариях к коду
With Browser("title:=Browser Title").Page("title:=Page Title").Frame("name:=appFrame")

	Dim iChildCount
	Set MyDesc = Description.Create
	MyDesc(“url”).Value = "http://address:port/application/SiteMaintenance?ACTIVITY_ID=SY010"
	MyDesc(“url”).RegularExpression = False
	'в этом месте QTP обычно нажимает на ссылку, но иногда получается так что не нажимает. Рендомное поведение.
	.Link(MyDesc).Click 

	MyDesc(“url”).Value = ".*ACTIVITY_ID=SY010"
	MyDesc(“url”).RegularExpression = True

	'При запуске теста iChildCount становится равной 1
	iChildCount = .ChildObjects(MyDesc).Count 

	'в этом месте тест падает практически всегда
	'вылазит ошибка "more than one object exist with given description"
	'на странице гарантированно только одна ссылка где есть ACTIVITY_ID=SY010
	'ChildObjects.Count подтверждает это
	.Link(MyDesc).Click 
End With

Если делать record/play через object repository то все работает. Не знаю даже что делать, кроме как обращаться в суппорт, что займет полгода в лучшем случае.
Надеюсь на ребят из Логики, может воспроизведете такой баг у себя :smile:
  • 0

#2 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 22 декабря 2009 - 14:57

1. А какая версия IE?
2. В IE табы включены отключены?
3. Когда первый раз в коде встречается .Link(MyDesc).Click (с комментарием "'в этом месте QTP обычно нажимает на ссылку, но иногда получается так что не нажимает. Рандомное поведение.") и QTP не кликает на ссылку, то он как-то сообщает, почему он не кликнул?
4. Где-нибудь до представленного кода проверяется, что QTP видит родительский объект (Browser("title:=Browser Title").Page("title:=Page Title").Frame("name:=appFrame").Exist что возвращает)?
5. На VMWare какая ОС эмулирована?
  • 0

#3 Jed Meyers

Jed Meyers

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Jed Ezriela Meyers

Отправлено 22 декабря 2009 - 15:01

1. А какая версия IE?
2. В IE табы включены отключены?
3. Когда первый раз в коде встречается .Link(MyDesc).Click (с комментарием "'в этом месте QTP обычно нажимает на ссылку, но иногда получается так что не нажимает. Рандомное поведение.") и QTP не кликает на ссылку, то он как-то сообщает, почему он не кликнул?
4. Где-нибудь до представленного кода проверяется, что QTP видит родительский объект (Browser("title:=Browser Title").Page("title:=Page Title").Frame("name:=appFrame").Exist что возвращает)?
5. На VMWare какая ОС эмулирована?



1. IE 7.0.6001.18000CO
2. Включены
3. Та же ошибка. More than one object found.
4. Видит, и может кнопки нажимать там, к примеру. Возвращает True.
5. Vista
  • 0

#4 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 22 декабря 2009 - 15:54

1. IE 7.0.6001.18000CO
2. Включены
3. Та же ошибка. More than one object found.
4. Видит, и может кнопки нажимать там, к примеру. Возвращает True.
5. Vista

Единственное объяснение, которое мне пока пришло, — это то, что иногда в соседнем табе открыта страница с url="http://address:port/...IVITY_ID=SY010"
Если так, то QTP действительно не может разобраться, надо ли ему работать со страницей, у которой url="http://address:port/...IVITY_ID=SY010" или же со ссылкой на другой странице, у которой такой же url.
Попробуйте явно указать класс объекта при задании описания:
MyDesc(“Class”).Value = "Link"
  • 0

#5 Jed Meyers

Jed Meyers

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Jed Ezriela Meyers

Отправлено 23 декабря 2009 - 07:43

Единственное объяснение, которое мне пока пришло, — это то, что иногда в соседнем табе открыта страница с url="http://address:port/...IVITY_ID=SY010"
Если так, то QTP действительно не может разобраться, надо ли ему работать со страницей, у которой url="http://address:port/...IVITY_ID=SY010" или же со ссылкой на другой странице, у которой такой же url.
Попробуйте явно указать класс объекта при задании описания:
MyDesc(“Class”).Value = "Link"


Открыта только одна страница во время запуска. MyDesc(“micclass”).Value = "Link" дает тот же результат.
Мне кажется, тут какая то проблема с внутренней обработкой RegExp.
  • 0

#6 Zenturio

Zenturio

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

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


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

Единственное объяснение, которое мне пока пришло, — это то, что иногда в соседнем табе открыта страница с url="http://address:port/...IVITY_ID=SY010"
Если так, то QTP действительно не может разобраться, надо ли ему работать со страницей, у которой url="http://address:port/...IVITY_ID=SY010" или же со ссылкой на другой странице, у которой такой же url.
Попробуйте явно указать класс объекта при задании описания:
MyDesc(“Class”).Value = "Link"


Открыта только одна страница во время запуска. MyDesc(“micclass”).Value = "Link" дает тот же результат.
Мне кажется, тут какая то проблема с внутренней обработкой RegExp.


Попробуйте указать micclass когда задаете описание объекта.
mydesc("micclass").value="webLink"
И покажите что получилось, когда были выбраны объекты - интерeсует их список - какой линк получился в текстовом варианте
  • 0

#7 Jed Meyers

Jed Meyers

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Jed Ezriela Meyers

Отправлено 23 декабря 2009 - 15:39

Попробуйте указать micclass когда задаете описание объекта.
mydesc("micclass").value="webLink"


В QTP 10 нет такого класса обьектов как webLink, есть только Link.
И если я укажу mydesc("micclass").value="webLink" то вылезет эррор "object doesn't support this property or method"

И покажите что получилось, когда были выбраны объекты - интерeсует их список - какой линк получился в текстовом варианте

Не совсем понял вопрос. Где выбраны? Список чего?
  • 0

#8 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 23 декабря 2009 - 17:10

И покажите что получилось, когда были выбраны объекты - интерeсует их список - какой линк получился в текстовом варианте

Не совсем понял вопрос. Где выбраны? Список чего?

Думаю, что подразумевался следующий вывод:
Dim myDescSet myDesc = Description.CreatemyDesc("micclass") = "Link"Dim frameSet frame = Browser("title:=Browser Title").Page("title:=Page Title").Frame("name:=appFrame")Dim linksSet links = frame.ChildObjects(myDesc)Dim ifor i=0 to links.count - 1	s = "i=" & Cstr(i) & ", url=" & links(i).GetTOProperty("url")	Print snext

  • 0

#9 Jed Meyers

Jed Meyers

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Jed Ezriela Meyers

Отправлено 23 декабря 2009 - 19:22

Думаю, что подразумевался следующий вывод:


Там куча ссылок с разными URL. При попытке нажатия на любую вылазит еррор.
Кстати

.ChildObjects(oDesc).Count 'как мы помним выдает 1
.ChildObjects(oDesc).Item(0).Click ' выдает general run error

  • 0


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

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