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

gralex

Регистрация: 26 сен 2007
Offline Активность: 27 апр 2010 10:05
-----

Мои темы

QTP 9.1: распознавание дополнительных html-тегов (VML)

12 ноября 2009 - 16:56

Всем привет,

Есть html-cтраница, использующая нестандартные теги, определяемые стандартом VML (возможность рисовать графические фигуры).
Необходимо проверить наличие элементов, определяемых тегом <rect> (для начала хотя бы). Столкнулся с тем, что QTP не видит таких элементов, пробовал:
1) записывать методом Record&Play (усиленно тыкал мышкой в элемент, но никаких действий не писалось, стандартные элементы пишутся без проблем)
2) через объект Description элементы с тегом <rect> также не находятся
Set descr = Description.Create
descr("html tag").Value = "rect"
Set lst = pg.ChildObjects(descr)
MsgBox lst.count
3) из DOM вытянуть объект можно (но не очень то хотелось бы работать с ним через DOM)
Set lst = pg.getElementsByTagName("rect")
MsgBox lst.length

Вопрос - можно ли как-то "уговорить" QTP работать с нестандартными тэгами?
(относительно нестандартными, поскольку тот же VML - это детище microsoft)

QTP 9.x: WTF - куда делать закладка Resources?

12 ноября 2009 - 13:46

Всем привет

В очередной раз столкнулся с проблемой с закладкой Resources в свойствах теста - на некоторых машинах пропадает и все, больше не появляется! При этом изменить список подключенных библиотек нельзя.

Скриншот с иллюстрацией во вложении.

Встречал описание подобной проблемы в нете, но решения не было. Кроме того говорили, что после переустановки QTP проблема фиксится, но в моем случае проблема остается и после полной переустановки QTP (c очисткой реестра от хвостов).

Не очень-то надеюсь на готовое решение, но может все-таки кто-то сталкивался с такой проблемой и может что-то посоветовать...

QTP 9.x, работа с DOM-элементами: отличие в работе в сравнении с QTP-о

16 сентября 2009 - 07:33

Всем привет,

Давно мучил один вопрос, а теперь вот появилась реальная необходимость его решения (довольно болезненная необходимость надо сказать).
Работаю с web-элементами через native-интерфейс (через .object) и столкнулся с проблемами в случае, когда на элементе повешены какие-то события. Пример:
http://www.w3schools...yjsref_onchange
Browser("title:=.*").Page("title:=.*").WebEdit("html id:=fname").Set "test"
Browser("title:=.*").Page("title:=.*").WebEdit("html id:=fname").object.value = "test"

Оба эти фрагмента в принципе делают одно и то же - устанавливают значение в эдит, но при вызове метода Set объекта WebEdit кроме установки значения еще вызываются какие-то события для соответвующего DOM-элемента (в этом случае вероятно, что вызывается еще и событие onChange). В данном тестовом примере проблема решается добавлением во втором коде еще вызова fireEvent("onchange") на эдите.

Вопрос более глобальный: что, помимо собственно самих действий (клика, установки и выбора значения), выполняется в таких методах объектов QTP как click(), set(), select() и прочих?
(вероятно, что файрятся события - но все ли или для каждого конкретного объекта свои?, что кроме событий)


P.S. Из истории вопроса: есть выпадающий список, на котором повешено событие onChange - применение для выбора элемента метода Select объекта WebList полностью повторяет реакцию системы на ручные действия пользователя (делается видимым определенный набор контролов на форме), выбор же значения через DOM с дальнейшим вызовом fireEvent("onchange") для элемента "<SELECT>" вызывает только "частичную" реакцию (некоторые из появившихся контролов имеют изменившийся контент).
Каких-либо "заморочек" по исходному коду страницы не нашел, теперь пытаюсь подкопаться со стороны QTP - у него ведь как-то получается все сделать правильно! :)

DataTable - что внутри?

06 августа 2009 - 14:37

Всем привет!

Вопрос для знатоков QTP - недавно подзадумался над тем, что являет собой DataTable?

Мое определение, которое сложилось на протяжении довольного длительного общения с QTP: это файл Default.xls, находящийся в папке скрипта (само содержимое DataTable) + какой-то модуль QTP, использующий COM-объект excel. В пользу этого говорят следующие факты:
1) само использование файла Default.xls :)
2) ограничения на количество столбцов, аналогичное ограничению в Excel (255 столбцов)
3) использование формул и автоформатирования (весьма неприятного надо сказать)
4) сильно уж DataTable на excel похож

Но оказалось, что есть и отличия:
1) ограничения на использования символов в названиях action (qtp) и листов (excel) (что в принципе равнозначно, поскольку при именовании action с таким же именем создается и sheet в DataTable):
excel - : / \ ? * [ ]
qtp - : / \ ? * < > | % ' ! { }
2) ограничения на длину названия листа:
excel - максимум 31 символ
qtp - ограничений на длину названия action (соответственно и sheet) нет (по крайней мере action с названием в 300 символов нормально сохраняется). И на удивление даже Default.xls открывается с листом, именем длиной в 300 символов.
3) основное отличие - для работы QTP не обязательно наличие установленного Excel! Разработанные скрипты нормально запускались на машине без установленного Excel. В принципе после изучения System Requirements для установки QTP, в котором ни слова не сказано об Excel, это меня перестало удивлять :)

Есть, конечно, вариант, что QTP использует какую-ту dll для эмуляции функций Excel в его отсутствие, но простой поиск по папке с установленным QTP ничего не дал.

Так чем же все-таки обеспечивается механизм DataTable? что у него внутри?
Ваши варианты... :)