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

Jed Meyers

Регистрация: 24 окт 2006
Offline Активность: 11 фев 2010 14:07
-----

Мои сообщения

В теме: Рекурсивная проверка сайта

24 декабря 2009 - 10:01

По поводу первого случая. У Browser и Page обычно описания совпадают. Попробуйте так.
Dim sUrlPart, oBrowserDesc, oLinks, oAllLinks 


Set oBrowserDesc = Description.Create
Set oLinks = Description.Create

oBrowserDesc("url").Value = ".*" & sUrlPart & ".*" 
'для обьединения стрингов используйте оператор &
'если в sUrlPart есть символы RegExp вроде ? то перед ними надо ставить \, что бы они обрабатывались как обычные стринги

oLinks ("micclass").Value = "Link"

Set oAllLinks =  Browser(oBrowserDesc).Page(oBrowserDesc).ChildObjects(Links)


Во втором случае, вы можете использовать BitmapCheckpoint. А для проверки пропертей обьекта можно просто использовать if.
Например, вы знаете заранее, что у картинок "html id" равен "image1", "image2", и тд. Вы хотите проверить что href картинок равен "http://test.url/1", "http://test.url/2"
Заносите это все в таблицу в столбики HTML_ID и HREF например. Потом:

Dim iRow, sSheetID, sImageHref, oImageDesc, oBrowserDesc

'используем локальный sheet в дата таблице
'такой код будет работать даже если action переименовать или поменять местами
sSheetID = Environment("ActionName")

'создаем обьект описания для картинки и браузера
Set oImageDesc = Description.Create
Set oBrowserDesc = Description.Create
oBrowserDesc("url").Value = "browser url"

'Проходим по каждой заполненой строке в таблице
For iRow = 1 To DataTable.GetSheet(sSheetID).GetRowCount
  DataTable.SetCurrentRow(iRow)

  'получаем из таблицы нужный html id картинки
  oImageDesc("html id").Value = DataTable.Value("HTML_ID", sSheetID)

  'из нужной картинки на странице вытягиваем href
  sImageHref = Browser(oBrowserDesc).Page(oBrowserDesc).Image(oImageDesc).GetROProperty("href")

  'если полученый href соответствует заданному в таблице
  If sImageHref = DataTable.Value("HREF", sSheetID) Then
	'то выводим в репорт Pass
	Reporter.ReportEvent micPass, "Проверка href", "Image html id = " & DataTable.Value("HTML_ID", sSheetID)
  Else
	'тут в выводе Fail в последний параметр можно добавить ожидаемый и полученный href
	Reporter.ReportEvent micFail, "Проверка href", "Image html id = " & DataTable.Value("HTML_ID", sSheetID)
  End If
'переходим на следущую строку в таблице  
Next

В теме: [QTP 10] More than one object found error

23 декабря 2009 - 19:22

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


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

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

В теме: Рекурсивная проверка сайта

23 декабря 2009 - 15:46

1. где можно найти подробное описание методов ChildObjects и descriptive programming (на русском или английском)
2. Реализация чекпоинтов через функции - это я так понял если не использовать стандартные чекпоинты, есть ли способ
делать проверки по стандартным чекпоинтам в случае если они заранее не определены?
3. Добавление объектов в OR. Да объекты действительно идентичны и добавлять их в OR мне тоже не хочется, но как сильно я потеряю
в функциональности? Может мне стоит заносить в OR страницу как объект, колдовать над ней а потом удалять?


1. В хелпе с примерами описано. На sqaforums есть пару тем.
2. Приведите, пожалуйста, примеры чекпоинтов которые вам понадобятся.
3. Исходя из того что вы сказали, я бы рекомендовал не использовать OR.

В теме: [QTP 10] More than one object found error

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сует их список - какой линк получился в текстовом варианте

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

В теме: [QTP 10] More than one object found error

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.